Entity framework core 除了编译查询外,如何改进冷查询

Entity framework core 除了编译查询外,如何改进冷查询,entity-framework-core,ef-core-2.1,Entity Framework Core,Ef Core 2.1,我的存储库中有一个findapi,而编译后的查询并没有按预期工作。该查询有多个IEnumerable.Contains(),因此编译结果是一个没有where in语句的SQL,所有的Contains都在本地计算 我知道EntityFramework6支持视图预生成,EntityFrameworkCore是否有类似的概念?如果不是,那么下一个改进冷查询性能的技巧是什么 [更新] 这仅用于说明 var-typeIds=newint[]{1,2}; var allTypeIds=!typeid.Any

我的存储库中有一个findapi,而编译后的查询并没有按预期工作。该查询有多个IEnumerable.Contains(),因此编译结果是一个没有where in语句的SQL,所有的Contains都在本地计算

我知道EntityFramework6支持视图预生成,EntityFrameworkCore是否有类似的概念?如果不是,那么下一个改进冷查询性能的技巧是什么

[更新] 这仅用于说明

var-typeIds=newint[]{1,2};
var allTypeIds=!typeid.Any();
var subsubfids=newint[0];
var ALLSUBITIDS=!子类型id.Any();
var navEntityIds=newint[0];
var allNavEntityIds=!navEntityIds.Any();
var result=dbContext.Entities.Where(e=>
(所有类型ID | |类型ID.Contains(e.TypeId))
&&(所有子类型ID | |子类型ID.Contains(e.subjectID))
&&(AllNavEntityId | | NavEntityId.Contains(e.NavigationEntityId)))
.Include(e=>e.Type)
.Include(e=>e.SubType)
.包括(e=>e.NavigationEntity)
.Include(e=>e.ExtendedEntities)
.ToList();
[Update2]已编译的版本

var searchParam=newsearchparam();
searchParam.TypeIds=newint[]{1,2};
searchParam.AllTypeIds=!searchParam.TypeIds.Any();
searchParam.subsubfids=newint[0];
searchParam.allSubsubjectId=!searchParam.subsubfids.Any();
searchParam.NavEntityIds=new int[0];
searchParam.AllNavEntityId=!searchParam.NavEntityIds.Any();
var compiledQuery=EF.CompileQuery((ctx,sp)=>
其中(e=>
(sp.alltypeid | | sp.TypeId.Contains(e.TypeId))
&&(sp.allsubtyId | | sp.subtyId.Contains(e.subtyId))
&&(sp.allNavEntityId | | sp.NavEntityId.Contains(e.NavigationEntityId)))
.Include(e=>e.Type)
.Include(e=>e.SubType)
.包括(e=>e.NavigationEntity)
。包括(e=>e.ExtendedEntities));
var result=compiledQuery.Invoke(dbContext,searchParam)
.ToList();

我想没有。可能您应该调查导致客户评估的原因以及如何避免。如果您能提供一些代码就好了。我猜Contains()无法编译,因此需要在本地对其求值。如果没有编译,我不会得到本地求值警告/异常。或者可能是因为编译本身:取决于
包含的
。如果它是在
IEnumerable
参数上,看起来它不会导致对已编译查询的客户端求值(至少在EFC2.2中是这样)。您是否也可以包含示例编译查询?是否包含int?被认为是原始的?其中一列可以为null,因此我必须使用它。