我有一个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中,我得到以下结果:
但是,当我使用DbSet.SqlQuery()运行sql时,我得到以下结果:
请注意第一项中的部门对象如何为空,但已在第二项中填充。
我知道我还没有提供太多信息,我希望这只是一个简单的答案。
顺便说一句..
DataContext.Configuration.LazyLoadingEnabled = false;
如您所见,LazyLoadingEnabled设置为false,我知道将此更改为true可以解决问题。我只是不愿意为我想要的任何电话启用它。
谢谢你们
答案 0 :(得分:1)
如果您之前已将Department加载到该DbContext实例中,则EF Change Tracking将识别它已具有DepartmentId = 2的Department,并将导航属性设置为该实例。