2012-06-30 55 views
2

如果我有一个像这样的LINQ表达式来拉取用户表和相关数据。该查询给了我像预期的那样人口稠密的对象图:为什么EF在执行“from”时会丢失包含数据

var query = from u in Context.Users 
        .Include("EventRegistrations") 
        .Include("State") 
       select u; 

不过,如果我添加其他相关的导航属性为“从”,即使我没有用它做任何事情,我只得到单我的结果中没有包含数据的对象数据。

var query = from u in Context.Users 
        .Include("EventRegistrations") 
        .Include("State") 
       from ur in u.UserRoles 
       select u; 

这是为什么?我想在where子句中的上述表达式中使用“ur”,但它消除了我获取包含的表数据的能力。

+0

正如感兴趣,你也可以使用拉姆达点包括语法,所以它是编译时安全,即'.INCLUDE(U =>ü。状态)''你还需要'使用System.Data.Entity;'语句 –

+1

为什么你在u.UserRoles中添加'from'?你不需要在where子句中使用'UserRoles'。 – LukLed

+0

http://stackoverflow.com/questions/416847/join-and-include-in-entity-framework。我同意@ LukLed。我建议显示你想要执行的完整查询,可能有另一种解决方案,不需要第二个“from”。 – Slauma

回答

1

它可能是因为你还没有包括的UserRole

var query = from u in Context.Users 
       .Include("EventRegistrations") 
       .Include("State") 
       .Include("UserRoles") 
      from ur in u.UserRoles 
      select u; 
+0

我怀疑这是否解决了这个问题。为什么添加UserRoles的Include会突然导致EventRegistrations和State被加载? – Slauma

相关问题