3
我想要在单个查询中检索一组对象(A
)和一些相关对象(B
)。上有A
和B
没有导航性能,所以我认为我需要使用这个语法:实体框架次要级别包含在投影中
select a from db.As where a.Id = x select new AndBHolder
{
A = a,
Bs = select b from db.Bs where b.ASomeId == A.SomeId select b
}
我不知道这是否是最好的方式,但它确实工作。但是,我现在需要包含B
(Cs
的列表)的属性。我没想到它的工作,但我想:
select a from db.As where a.Id = x select new AndBHolder
{
A = a,
Bs = select b from db.Bs.Include("Cs") where b.ASomeId == A.SomeId select b
}
从而未能与“法......包括宣布类型......不能与类型的实例调用...”。接下来,我想我会尝试的投影中的投影:
select a from db.As where a.Id = x select new AndBHolder
{
A = a,
Bs = select b from db.Bs where b.ASomeId == A.SomeId select new B
{
Id = b.Id,
// ...
Cs = select c from db.Cs where c.BId == b.Id select c
}
}
哪些失败,因为你不准投射到“不能在LINQ到实体查询来构造实体或复杂类型‘B
’”一个映射对象。那么我如何检索Bs
以及它们的Cs
填充,还是仅仅不支持二级包含?我只需要对数据库进行两次调用,一次检索As,一个检索Bs
及其Cs
?
谢谢Slauma,我知道包括永远不会是答案,但我能看到我现在去错了...用成SelectMany已经解决了这个问题。 – 2012-07-21 20:42:56