C# 实体框架包含转向超慢速转换

C# 实体框架包含转向超慢速转换,c#,entity-framework,C#,Entity Framework,EF函数 public IEnumerable<PromoteRequestRelationship> GetDependentsByRequestIds(List<long> requestIds, List<string> dependencyTypes) { return ( from pbd in Session.All<promote_build_depends>() join pr in Ses

EF函数

public IEnumerable<PromoteRequestRelationship> GetDependentsByRequestIds(List<long> requestIds, List<string> dependencyTypes) 
{
    return (
        from pbd in Session.All<promote_build_depends>()
        join pr in Session.All<promote_request>() on pbd.DEP_PARENT_REQ_ID equals pr.REQ_ID
        join pr2 in Session.All<promote_request>() on pbd.DEP_DESC equals pr2.REQ_ITEM
        where requestIds.Contains(pr.REQ_ID) && dependencyTypes.Contains(pbd.DEP_TYPE)
        select new PromoteRequestRelationship {
            ...
        }
    );
}
这个问题花了我将近10分钟才完成

但是,如果我移除铸件

WHERE ([Extent2].[REQ_ID] IN (2751163, 2752582, 2752585)) 
  AND ([Extent1].[DEP_TYPE] IN (N'Interdependent', N'Dependent')) 
  AND ([Extent1].[DEP_TYPE] IS NOT NULL)

这只需12秒钟,我如何防止EF转换为bigInt?

如果您传入一个long列表,该列表将转换为sql的bigInt数据类型,请尝试传入一个int列表。

什么是
requestId
数据类型?它是长的列表吗?是的,长的列表OK。在运行查询之前,将其转换为int,问题就解决了。
WHERE ([Extent2].[REQ_ID] IN (2751163, 2752582, 2752585)) 
  AND ([Extent1].[DEP_TYPE] IN (N'Interdependent', N'Dependent')) 
  AND ([Extent1].[DEP_TYPE] IS NOT NULL)