Linq返回外键引用数据

时间:2011-01-22 13:43:53

标签: mysql entity-framework entity-framework-4 linq-to-entities

我有一个包含两个表employeeemployeedetails的简单数据库。

employee有外键empdetailsid指向表employeedetails

我的简单linq查询返回员工

var employeeList = from employee in objectcontext.employees select employee;
return employeeList.ToList();

还会返回employeedetails以及我不需要的所有包含字段。 我正在使用Entity Framework 4.0。有没有办法避免获取所有不必要的数据。 我可以去定义一个只有员工表字段的模型类,并且可以加载到那个但是我想知道是否有更简单的方法。我正在使用mysql数据库。

2 个答案:

答案 0 :(得分:2)

您如何知道查询返回员工详细信息?您是否检查了生成的SQL查询,或者您是否只是尝试访问EmployeeDetails对象并获取了数据。在第二种情况下,EF确实可能只是按需加载数据(当您尝试访问它时)。否则,如果您确定在执行初始查询期间获取了额外数据,请在运行查询之前尝试隐式启用延迟加载:

objectcontext.ContextOptions.LazyLoadingEnabled = true;

答案 1 :(得分:1)

我没有使用过ef 4,但是大多数orm倾向于使用一种称为延迟加载的概念。仅在对该对象进行调用时才会检索相关员工详细信息中的数据。当您查看调试器中的对象时,单击对象时将检索特定员工详细信息的数据。为了更好地了解正在检索的数据,您需要针对数据库运行探查器以捕获正在进行的SQL查询。我不知道mysql是否有像sql server这样的内置探查器。如果没有,请查看nhprof。