如何解决LINQ和Entity Framework代码优先的SQL子查询结果
您对投影的看法是正确的。
如果Contact
具有导航属性Forms
,则可以进行以下投影:
from c in context.Contacts
select new { Contact = c, FormsCount = c.Forms.Count() }
如果没有,则必须使用子查询:
from c in context.Contacts
select new
{
Contact = c,
FormsCount = context.Forms.Count(f => f.Contact_Id == c.Id)
}
解决方法
我想进行一个查询,该查询将返回我的实体以及与其关联的实体之一的数量。例如:
select *,(select COUNT(*) from Forms where Contact_Id = Contacts.Id)
as FormsCount from Contacts;
我的Contact实体具有一个名为FormsCount的属性,但由于没有在表中命名的列,因此未映射该属性。是否可以编写一个LINQ查询,使我返回具有填充的其他FormsCount属性的Contact实体?
另外,如果可以在单独的字段中获取FormsCount值,并且可以将其手动复制到实体,我会很高兴。查询的结果可以是这种形式,例如:
{
Contact Contact;
int FormsCount;
}
然后,我可以遍历结果并将FormsCount复制到Contact。也许可以通过使用投影来实现?
我知道如何使用2个查询来做到这一点:a)首先获取联系人实体b)获取第一个查询中返回的联系人的对或联系人ID和FormsCount。
但是我想使用一个查询来做到这一点。另外,我不希望FormsCount属性始终填充在我的Contact实体中,我想对此进行控制。有任何想法吗?
谢谢,米哈尔
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。