使用ADO .NET实体数据的外键问题

时间:2010-11-04 23:20:13

标签: entity-framework

我正在使用VS2008和SQL Express 2008 R2开发一个带有MSSQL数据库的ASP.NET MVC2应用程序。我有一个名为Business的表和另一个名为Employee的表。员工拥有BusinessID外键,因为所有员工都必须属于公司。

我正在使用ADO .NET实体数据模型来生成我的模型。从reading another post开始,我对实体框架的版本似乎不会带来外键,而是创建一个导航属性。

我手动将一些数据插入到数据库中,创建一个id为1的业务,以及一个business_id为1的员工。现在当我尝试加载我的索引页面时,它是一个员工列表,它给了我一个null引用异常,因为与Employee对象关联的Business对象为null。

实体模型是不是意味着为我填写这个属性?如果没有,如果由于外键未被带过而没有来自数据库的业务ID,我打算如何在对象之间的前端创建关系?

1 个答案:

答案 0 :(得分:1)

您必须显式加载导航属性:

entityContext.Businesses.Include("Employees");

或者,如果您已经加载了实体,则可以使用(用于导航集合):

if(!business.Employees.IsLoaded)
    business.Employees.Load();

或者如果只有一个实例:

if(!employee.BusinessReference.IsLoaded)
    employee.BusinessReference.Load();