为什么EF需要实体的id以及引用

时间:2012-10-21 18:20:36

标签: entity-framework ef-code-first

我有一个关于实体框架的问题。在代码第一个场景中,我有一个引用地址的人员类。在我的域中,我将此作为Address类的引用。我见过的所有实体框架示例都需要一个AddressId字段。这是我认为不应该存在的东西,在我的域驱动模型中不是必需的。

为什么EF需要这个?我可以不用它(我不相信NHibernate需要这个)。

由于

public class Person()
{
    public int Id {get;set;}
    public string Name {get;set;}
    public Address Address {get;set;}
    public int AddressId {get;set;} //Entity Framework seems to require this
}

2 个答案:

答案 0 :(得分:1)

不需要外键。实际上,EF4中引入了对外键的支持。通常,FK是为了方便起见。在许多情况下,FK有助于提高性能,因为如果您知道id(一次保存数据库),您就可以在不加载相关实体的情况下更改关系。

答案 1 :(得分:0)

您应该阅读独立协会和外国钥匙协会: Code First: Independent associations vs. Foreign key associations?

同一位作者回答上述问题的一篇好文章也可以在以下网址获得: foreign-key-vs-independent-associations-in-ef-4