2011-04-11 97 views
0

我正在创建我的第一个MVC 2 applicaiton。我遵循书中的expamples,并创建了一个ADO.NET实体数据模型,它可以自动生成model.edms和model.designer.cs文件。然后我在模型文件夹中创建了一个repository.cs文件来存储我的检索数据的方法。当我使用这些方法从我的表中检索对象时,foriegn键属性返回null。这里是我的方法MVC 2与实体数据模型返回NULL为外键

private LanTracerEntities2 entities = new LanTracerEntities2(); 

    public Employee FindEmployee(string empId) 

    { 
     var emp = from employee in entities.Employees 
       where employee.LogIn == empId 
       select employee; 

     return emp.FirstOrDefault(); 
    } 

一个Employee表中有以下几列: ID EmpFName EmpLName EmpInitial 电话 的LogIn 电子邮件 LOCID

LOCID是foriegn键连接起来,作为地点表。当我运行该方法时,它会为每个属性返回一个值,但LocID。 LocID为空。表中有数据。这不是我唯一对foriegn关键属性返回null的对象。我怎样才能得到返回FK值的方法?

+0

你的问题与MVC无关。它更像是一个LINQ to Entities问题。 – 2011-04-11 20:56:42

回答

0

看起来你正在比较错误的属性?鉴于您的参数的名字,我觉得你可能要与员工的ID来比较:

var emp = from employee in entities.Employees 
      where employee.ID == empId 
      select employee; 

说了这么多你的主键应该是数字INT/BIGINT - 如果是这样的情况下做到这一点,而不是:

int id = Convert.ToInt32(empId); 
    var emp = from employee in entities.Employees 
      where employee.ID == id 
      select employee; 

如果要包括位置作为查询的一部分,结果,你可以为具体问:

var emp = from employee in entities.Employees.Include("Location") 
      .. 

这应在检索时在您的员工记录中填入Location财产。

+0

谢谢我添加了.Include语句,它最终包含了fk数据。我可以使用它来引入多个FK吗?包含(“FK1”,“FK2”) – user695916 2011-04-11 21:25:53

+0

@user:是 - 您可以链接包含语句,即'entities.Employees.Include(“foo”).include(“bar”)'I鼓励您查看http://msdn.microsoft.com/en-us/library/bb896272.aspx上的功能文档 – BrokenGlass 2011-04-11 21:29:08