1

好的,这就是问题所在,我在数据库中有一个视图,其中包含大量信息,100 列,vwComponantA

我的 .net 应用程序中有一个名为 ComponantA 的实体,它包含使用 [Column()] 属性的所有映射,这很好,可以工作,但是速度很慢,因为它在数据库上执行了一个 select * 来填充对象,这又可以了.

为了解决上述性能问题,我引入了 DynamicLinq。这允许我减少我带回的列的数量,并且仍然允许我使用类型安全来使用普通的 Linq 进行查询,这很棒。然后处理我带回的缩减字段,我有单独的 POCO 组件,每个组件都有自己的一组 [Column] 属性,在运行时使用映射类进行映射。

问题是在处理大型数据集时,它们之间的映射可能会非常慢,10000 条记录映射 10000 次等。EF 所做的是创建一个 DynamicProxyClass,然后您在组件之间进行映射。

我的问题是,我怎样才能避免映射并让 EF 为我做映射?(我处理IQueryable不是IQueryable<T>因为动态 linq)

必须有一种方法来利用 [Column] 属性,同时保持查询动态。

这是所有代码优先和实体框架 5。

谢谢你的帮助。缺口

4

1 回答 1

0

老实说,我不明白你的问题,但你想要做的不需要动态 linq。你只需要预测:

var data = from c in context.vwComponentA
           select new POCOWithIdAndName {
               Id = c.Id,
               Name = c.Name
           };

投影在数据库中执行,因此它只会带回IdName

于 2012-10-02T12:03:56.200 回答