EF6失去了实体之间的关系

时间:2014-01-25 16:21:00

标签: asp.net-mvc entity-framework

在我的MVC4,EF6应用程序中,我正在创建一个“联系人”对象。此联系人持有“地址”对象。 两个实例都在同一视图上创建。 这就是我在控制器方面的表现:

enter image description here

我可以看到它在我查看我的Db时创建两个实例都很好。 这是它的外观:

地址表:

enter image description here

联系人表:

enter image description here

这一切都很好,直到我重新启动我的应用程序。此操作会导致我的联系人及其地址之间的关系消失。 这是我第二次运行时的样子: enter image description here

这是我的地址类:

enter image description here

我的联系人课程:

enter image description here

知道为什么会这样吗? THX。

1 个答案:

答案 0 :(得分:0)

那是因为您在Address构造函数中创建了新的Contact

请改为尝试:

public Contact()
{
      FirstName = String.Empty;
      LastName = String.Empty;
      //Address = new Address(); <-- remove this line
}

或者,使用Include加载'Eager-Load'Address,这样您就不必依赖代理来为您设置'延迟加载'Address

修改

我相信你正在初始化Address,因为你想确保它始终被设置,所以你永远不会被NullReferenceException扔给你。为此,你可以试试这个:

 private Address _address;

 public virtual Address Address
 {
      get { return _address ?? (_address = new Address()); }
      set { _address = value; }
 }