EF5映射IQueryable到具有列属性的自定义类

时间:2012-10-02 11:13:59

标签: entity-framework mapping iqueryable entity-framework-5

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

我的.net应用程序中有一个名为ComponantA的实体,其中包含使用[Column()]属性的所有映射,这很好,有效,但速度很慢,因为它在DB上执行select *来填充对象,再次这是有效的。

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

问题是,在处理大型数据集时,这些映射之间的映射可能会非常慢,10000个记录映射10000次等.EF的作用是创建一个DynamicProxyClass,然后在组件之间进行映射。

我的问题是,如何避免映射并让EF为我做映射? (由于动态linq,我正在处理IQueryable NOT IQueryable<T>

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

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

感谢您的帮助。尼克

1 个答案:

答案 0 :(得分:0)

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

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

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

相关问题