实体框架中的最佳实践是什么:
1.在CLR类型上定义外键
public class Book
{
public int AuthorId{get;set;}
public Author Author{get;set;}
}
2.不定义外键(只定义导航属性)
public class Book
{
public Author Author{get;set;}
}
实体框架中的最佳实践是什么:
1.在CLR类型上定义外键
public class Book
{
public int AuthorId{get;set;}
public Author Author{get;set;}
}
2.不定义外键(只定义导航属性)
public class Book
{
public Author Author{get;set;}
}
我个人的偏好是在定义关系时使用定义 FK 并设置键值 ( AuthorId
)。
Julie Lerman在这里和这里有 2 篇很棒的文章,解释了采用这种方法的一些好处。
这是摘要:
保存悲伤并使用该外键
无需设置导航属性并且不必担心 [相关实体] 的状态,只需设置 [Id] 属性,因为您确实可以在 [相关实体] 实例中访问该值。这是我发现自己经常向开发人员建议的事情。即使在 Twitter 上,我也看到了这样一个问题:“为什么 EF 插入已经存在的数据?” 我经常正确地回答:“你有没有机会在新实体而不是 FK 上设置导航属性?J”</p>