EF使用SQL查询加载相关实体

时间:2017-09-26 12:36:20

标签: c# sql sql-server entity-framework

我有一个sql语句,我想返回一个有相关部门实体的人员列表。 Person类有一个Department ID,当我从数据库加载它时,它与实体框架的魔力相关联,它将正确的Department对象关联起来。

我的SQL语句是:

SELECT *
FROM PERSON
    INNER JOIN DEPARTMENT ON PERSON.DEPARTMENT_ID = DEPARTMENT.ID
WHERE UPPER(FORENAME) LIKE '%RALPH%'
ORDER BY SURNAME

在运行查询的MSSMS中,我得到以下结果:

enter image description here

但是,当我使用DbSet.SqlQuery()运行sql时,我得到以下结果:

enter image description here

请注意第一项中的部门对象如何为空,但已在第二项中填充。

我知道我还没有提供太多信息,我希望这只是一个简单的答案。

顺便说一句..

DataContext.Configuration.LazyLoadingEnabled = false;

如您所见,LazyLoadingEnabled设置为false,我知道将此更改为true可以解决问题。我只是不愿意为我想要的任何电话启用它。

谢谢你们

1 个答案:

答案 0 :(得分:1)

如果您之前已将Department加载到该DbContext实例中,则EF Change Tracking将识别它已具有DepartmentId = 2的Department,并将导航属性设置为该实例。