在CLR类型上定义外键或不定义

时间:2013-08-08 10:14:16

标签: .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;}
}

1 个答案:

答案 0 :(得分:1)

我个人的偏好是使用定义FK并在定义关系时设置键值(AuthorId)。

Julie Lerman有两篇很棒的文章herehere解释了采用这种方法的一些好处。

以下是摘要:

  

拯救悲伤并使用该外键

     

不是设置导航属性而不必担心[相关实体]的状态,只需设置[Id]属性,因为您可以访问[相关实体]实例中的该值。这是我发现自己经常向开发人员提出的建议。即使在推特上,我也会看到这样一个问题:“为什么EF插入的数据已经存在?”而且我经常在回答时正确地猜测:“你有没有机会在新实体而不是FK上设置导航属性? J”

相关问题