长话短说,我们有一个C#WebApi,它提供了从DAL到DTOS的映射实例。
每个控制器公开一个IEnumerable<T> Get()
我有一个查找所有控制器的测试,并调用此get方法。
这会清除仅在执行时发生的所有映射错误。
有一阵子我注意到要确保您必须实际执行枚举,否则映射将永远不会发生。
所以我有这个代码
if (results is IEnumerable enumerable)
{
var counter = enumerable.Cast<object>().Count();
Trace.Write($"{counter} results found.");
}
这将执行强制类型转换(调用映射),并出于输出原因对我进行计数。
这一直有效,直到结果集变得庞大-现在才超时。
我的大多数IEnumerables实际上是在下面的IQueryable
我需要一种可以在反射数据/执行类型上工作的IQueryable上Take(10)
的方法。这样可以使映射工作,但可以使用较小的数据集。
帮助!