我想了解Entity Framework在命名/生成导航属性方面遵循哪些规则。我观察到了几种看起来不合理的情况,所以想知道有没有人确切地知道它们是如何工作的。
场景1:
public class Post
{
public int Id { get; set; }
public User Author { get; set; }
}
生成
默认情况下,导航属性生成名为[PropertyName]_Id的外键。
场景2:
如果手动指定FK Id,则EF生成格式为[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; }
}
生成
导航属性检测和生成的规则是什么?