c# - 如何设置相关实体​​的计数属性而无需执行额外查询或包含不必要的数据

标签 c# .net entity-framework

我有一个类“Campaign”,它有一个导航属性“Students”。事件类有一个属性“StudentsCount”来存储学生的数量。我不想在查询结果中包含所有学生。如何在附加各自的学生人数的同时查询事件?理想情况下,我不想在初始查询后遍历我的所有事件以获取计数。

IQueryable<TEntity> query = this._objectSet.AsQueryable(); //this is my campaigns object set
query = query.Where(c => c.UserId == id);
query = query.Include("");
return query.ToArray(); 

更新:-- 请注意,我的初始查询正在获取多个广告系列

我在想也许我可以用一个 select 做一些事情,但我不确定如何完成这个

最佳答案

在不加载子项集合的情况下查询计数称为额外惰性查询,如果您需要该术语以允许您使用 Google 解决此问题。

在这种情况下,你会做这样的事情:

var campaign = query.Single();
var studentsQuery = context.Entry(campaign).Collection(c => c.Students).Query();
var count = studentsQuery.Count();

这将具体化实体的数量,而无需将它们全部带回来。

关于c# - 如何设置相关实体​​的计数属性而无需执行额外查询或包含不必要的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24743158/

相关文章:

.net - 有关面向方面编程的帮助和信息

c# - Entity Framework 程序集中的重复类型名称 (6.1.0)

c# - EntityFramework 中的多对多 SQL 查询

c# - 如何知道何时停止填充 OracleDataAdapter

c# - 具有通用类型继承的 AutoMapper

c# - 取消 token 在这里有什么用

c# - 必须不可为空才能用作参数 'T'

c# - asp.Net 中的 HTTPHandler

.net - CQRS,DDD同步报告数据库

c# - 从 XML 生成 C# 类