Entity framework EF可枚举。包含和查询性能

Entity framework EF可枚举。包含和查询性能,entity-framework,entity-framework-6,Entity Framework,Entity Framework 6,在我的查询中,我经常使用Enumerable.Contains(..),在复杂的查询中,实际的查询编译需要花费很长时间(比如10-20秒),而查询执行只需要不到一秒钟的时间 有人对这个问题有什么建议(解决方法)吗。我需要使用Enumerable.Contains,因为我有一个具有层次结构(n级深度)的表。如果我们举一个众所周知的例子: CPU -- AMD -- FX -- A8 -- Intel -- I3 -- I5 等等。如果我需要检索所有CPU的数据,我首先获取属于该组

在我的查询中,我经常使用Enumerable.Contains(..),在复杂的查询中,实际的查询编译需要花费很长时间(比如10-20秒),而查询执行只需要不到一秒钟的时间

有人对这个问题有什么建议(解决方法)吗。我需要使用Enumerable.Contains,因为我有一个具有层次结构(n级深度)的表。如果我们举一个众所周知的例子:

CPU
-- AMD
  -- FX
  -- A8
-- Intel
  -- I3
  -- I5
等等。如果我需要检索所有CPU的数据,我首先获取属于该组(和子组)的所有产品的ID,然后使用

ProductIds.Contains(p.Id)
在查询中。这也会阻止缓存,所以查询总是被重新编译。如果有人知道更好的方法,我会洗耳恭听

问候,,
Goran

10-20秒来编译一个查询?!对当我将这个编译后的查询直接执行到SSMS中时,只需不到一秒钟的时间。查询有很多大小写和、分组、连接……这里的“编译”是什么意思?我不认为你完全正确。好吧,那与编译无关。使用IEnumerable.Contains时无法编译查询,这是我这里最大的问题。上下文生成相当快,而且这从来不是第一个执行的查询。我无法显示完整的模型,但大约有30个实体,大部分是1-多个关系。编译查询需要10-20秒?!对当我将这个编译后的查询直接执行到SSMS中时,只需不到一秒钟的时间。查询有很多大小写和、分组、连接……这里的“编译”是什么意思?我不认为你完全正确。好吧,那与编译无关。使用IEnumerable.Contains时无法编译查询,这是我这里最大的问题。上下文生成相当快,而且这从来不是第一个执行的查询。我无法显示完整的模型,但大约有30个实体,大多数是1-多个关系。