我想要进行一个查询,该查询将返回我的实体以及它们的一些关联实体。例如:
select *, (select COUNT(*) from Forms where Contact_Id = Contacts.Id)
as FormsCount from Contacts;
我的联系人实体有一个名为 FormsCount 的属性,但它未映射,因为表中没有类似名称的列。是否可以编写一个 LINQ 查询来返回填充了附加 FormsCount 属性的联系人实体?
或者,如果我可以在单独的字段中获取 FormsCount 值,并且可以手动将它们复制到实体中,我会很高兴。查询的结果可能采用以下形式:
{
Contact Contact;
int FormsCount;
}
然后我可以迭代结果并将 FormsCount 复制到 Contact。也许这可以通过使用投影来实现?
我知道如何使用两个查询来做到这一点:
a) 首先获取联系人实体
b) 获取第一个查询中返回的联系人对或联系人 ID 和 FormsCount。
但我想使用一个查询来做到这一点。另外,我不希望 FormsCount 属性始终填充在我的联系人实体中,我希望对此进行控制。有任何想法吗?
谢谢,
米哈尔
你对投影的看法是正确的。
If 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)
}
EF 将在一个 SQL 查询中处理这两种情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)