标签: .net entity-framework entity-framework-4 entity-framework-4.1
实体框架中的最佳做法是什么:
1.在CLR类型上定义外键
public class Book { public int AuthorId{get;set;} public Author Author{get;set;} }
2.不定义外键(仅定义导航属性)
public class Book { public Author Author{get;set;} }
答案 0 :(得分:1)
我个人的偏好是使用定义FK并在定义关系时设置键值(AuthorId)。
AuthorId
Julie Lerman有两篇很棒的文章here和here解释了采用这种方法的一些好处。
以下是摘要:
拯救悲伤并使用该外键 不是设置导航属性而不必担心[相关实体]的状态,只需设置[Id]属性,因为您可以访问[相关实体]实例中的该值。这是我发现自己经常向开发人员提出的建议。即使在推特上,我也会看到这样一个问题:“为什么EF插入的数据已经存在?”而且我经常在回答时正确地猜测:“你有没有机会在新实体而不是FK上设置导航属性? J”
拯救悲伤并使用该外键
不是设置导航属性而不必担心[相关实体]的状态,只需设置[Id]属性,因为您可以访问[相关实体]实例中的该值。这是我发现自己经常向开发人员提出的建议。即使在推特上,我也会看到这样一个问题:“为什么EF插入的数据已经存在?”而且我经常在回答时正确地猜测:“你有没有机会在新实体而不是FK上设置导航属性? J”