Я хотел бы знать, какие правила Entity Framework следует в отношении свойств именования/генерации навигационных свойств. Я наблюдал несколько сценариев, которые, похоже, не имеют смысла, поэтому мне было интересно, знает ли кто-нибудь, как они работают.
Сценарий 1:
public class Post
{
public int Id { get; set; }
public User Author { get; set; }
}
Формирует
т. по умолчанию свойства навигации генерируют FK с именем [PropertyName] _Id
Сценарий 2:
Имеет смысл, что если EF генерирует такие свойства формата [PropertyName] _Id, когда вы вручную укажете FK Id, он будет следовать тем же правилам:
public class Post
{
public int Id { get; set; }
public int? Author_Id { get; set; }
public User Author { get; set; }
}
Формирует
Как вы можете видеть, это автоматически не регистрируется как свойство nav.
Сценарий 3:
Если это не работает для сценария 2, почему он работает для альтернативного соглашения об именах?
public class Post
{
public int Id { get; set; }
public int? AuthorId { get; set; }
public User Author { get; set; }
}
Формирует
Каковы правила обнаружения и генерации навигационных свойств?