我想知道实体框架在导航属性的命名/生成方面遵循什么规则。我观察到了几种似乎没有意义的场景,所以我想知道是否有人确切地知道这些是如何工作的。
场景一:
public class Post
{
public int Id { get; set; }
public User Author { get; set; }
}
生成
IE。默认情况下,导航属性会生成名为 [PropertyName]_Id 的 FK
场景二:
有意义的是,如果 EF 在您手动指定 FK Id 时生成格式 [PropertyName]_Id 之类的属性,它将遵循相同的规则,但是:
public class Post
{
public int Id { get; set; }
public int? Author_Id { get; set; }
public User Author { get; set; }
}
生成
如您所见,这不会自动注册为导航属性。
场景 3:
如果它不适用于场景 2,为什么它适用于替代命名约定?
public class Post
{
public int Id { get; set; }
public int? AuthorId { get; set; }
public User Author { get; set; }
}
生成
导航属性检测和生成的规则是什么?