【问题标题】:Entity Framework query with Contains and in-memory list具有包含和内存列表的实体框架查询
【发布时间】:2018-02-21 10:39:58
【问题描述】:

我正在使用实体框架,我有一个类似的查询:

entitiesContainer.Entities.Where(e => inMemoryList.Contains(e.Field))

它可以工作,但我遇到了性能问题。我花了一些时间对此进行分析,性能下降似乎发生在应用程序而不是数据库中。显然,这个查询在每次执行时都会被编译,我猜这是因为Contains 的翻译方式。

你知道我怎样才能避免每次都编译查询吗?

谢谢。

【问题讨论】:

标签: sql-server performance entity-framework linq


【解决方案1】:

查询每次都会被编译,因为它必须从您的内存列表中生成一个“IN (..., ..., ...)”语句,该语句可能会发生变化。

过去,我通过将值列表作为参数传递给存储过程,并让存储过程返回正确的字段列表以映射为实体结果,从而解决了类似的性能问题。

【讨论】:

  • 我相信这更适合作为评论。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-12-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-06-22
相关资源
最近更新 更多