具有包含和内存列表的实体框架查询

时间:2018-02-21 10:39:58

标签: sql-server performance entity-framework linq

我正在使用Entity Framework,我的查询类似于:

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

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

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

感谢。

1 个答案:

答案 0 :(得分:-1)

每次都会编译查询,因为它必须从内存列表中生成可能已更改的“IN(...,...,...)”语句。

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