具有实体数据模型的MVC 2为外键返回Null

时间:2011-04-11 20:53:08

标签: linq-to-sql entity-framework linq-to-entities

我正在创建我的第一个MVC 2应用程序。我已经按照我的书中的示例进行了操作,并创建了一个自动生成model.edms和model.designer.cs文件的ADO.NET实体数据模型。然后我在我的模型文件夹中创建了一个repository.cs文件来存储我的检索数据的方法。当我使用这些方法从表中检索对象时,foriegn键属性返回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 电话 登录 电子邮件 LOCID

LocID是一个将其链接到Location表的foriegn键。当我运行该方法时,它返回除LocID之外的每个属性的值。 LocID为null。表格中有数据。这不是我唯一为foriegn键属性返回null的对象。如何获取返回FK值的方法?

1 个答案:

答案 0 :(得分: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属性。