1

我正在使用 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 秒)结果。

有任何想法吗?

先谢谢了!

更新:

  1. 实体类:
    两个实体类,一个是基类。两者之间大约有 27 个列/属性,其中大多数位于基类上。

  2. 选择结果中的对象数:
    约 75K。

  3. 正在执行
    的存储查询:查询是从视图中选择(列),其中 (1=1)

  4. 正在使用的 API(DbContext 或 ObjectContext)
    在 EF 5/POCO 场景中,我使用的是 DbContext。
    在 EF 4/生成的实体场景中,我使用了 ObjectContext。

    **当使用 EF 5/DbContext 时,我还尝试访问(较低级别的)ObjectContext 和 ExecuteStoreQuery 方法,结果与使用 DbContext SqlQuery 时一样慢。

4

1 回答 1

0

误报......最终成为 poco 中的少量反射,在物化许多物体时会降低性能。

于 2013-01-18T01:12:36.923 回答