Linq to Entities计算子查询?

4

我正在尝试在Linq to Entities(EF4)中执行此查询。

select Header.Id, 
 (select count(*) 
  from Detail 
  where Header.Id = Detail.headerId) detailcount
from Header

这样做是行不通的,因为在EF中不允许这样做:
(Header和Detail都是EntityObjects)

from h in context.Header
select new Header
    {
        Id = h.Id,
        DetailCount = (from d in context.Detail 
                       where d.headerId = p.Id select d).Count()
    }

我在 Detail 实体(部分类)中添加了一个新属性 DetailCount。

上述 Linq 查询无法工作,因为我不能将其投影到映射实体上:
The entity cannot be constructed in a LINQ to Entities query

还有其他的方法吗?


头文件和细节之间是否有关系,例如一对多? - Pranay Rana
是的,一对多(一个标题,多个详细信息) - roeland
@Roeland 你解决了这个问题吗? - Giovanni B
2个回答

3
下面会完成你的任务,因为两者相关。
from h in context.Header
select new Header
    {
        Id = h.Id,
        detailCount = h.Detail.Count()
    }

1
这确实是一个较短的linq查询版本,但问题在于我无法将其投影到映射实体上。 - roeland

0

我通过使用匿名类型来解决了这个问题。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接