在我的MVC4,EF6应用程序中,我正在创建一个“联系人”对象。此联系人持有“地址”对象。 两个实例都在同一视图上创建。 这就是我在控制器方面的表现:
我可以看到它在我查看我的Db时创建两个实例都很好。 这是它的外观:
地址表:
联系人表:
这一切都很好,直到我重新启动我的应用程序。此操作会导致我的联系人及其地址之间的关系消失。 这是我第二次运行时的样子:
这是我的地址类:
我的联系人课程:
知道为什么会这样吗? THX。
答案 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; }
}