我正在使用 EF 5、POCO 对象和 SqlQuery。对象的物化非常慢,大约 20 秒。如果我使用 sql management studio 运行 SQL 查询,查询将在大约 2 秒内运行。(例如 this.context.mytable.SqlQuery(query).AsNoTracking.ToList())
我以前在 EF 4、Generated Entities 和 ExecuteStoreQuery 中使用了这个完全相同的 SQL 查询。对象的物化并没有那么慢大约 10 秒。
为什么使用 POCO 的性能差异?我已经尝试使用来自 DbContext 的 ExecuteStoreQuery 使用 POCO 并获得相同的慢速(20 秒)结果。
有任何想法吗?
先谢谢了!
更新:
实体类:
两个实体类,一个是基类。两者之间大约有 27 个列/属性,其中大多数位于基类上。选择结果中的对象数:
约 75K。正在执行
的存储查询:查询是从视图中选择(列),其中 (1=1)正在使用的 API(DbContext 或 ObjectContext)
在 EF 5/POCO 场景中,我使用的是 DbContext。
在 EF 4/生成的实体场景中,我使用了 ObjectContext。**当使用 EF 5/DbContext 时,我还尝试访问(较低级别的)ObjectContext 和 ExecuteStoreQuery 方法,结果与使用 DbContext SqlQuery 时一样慢。