LinQ to SQL在使用Any()时引发Stackoverflow异常

问题描述 投票:0回答:2

我正在使用如下所示的LinQ查询

public List<TEntity> GetEntities<TEntity>(int[] ids)
{
    var someDbSet = new DbSet<TEntity>();

    var resultQ = someDbSet.Where(t => !ids.Any() || ids.Contains(t.ID)); //<= crashing line

    return resultQ.toList();
}

通常可以使用,但是在某些情况下,如果id大小约为7000个项目,则会崩溃。引发的异常消息是“引发了'System.StackOverflowException类型的异常”。它没有堆栈跟踪或InnerException。

我也获得此信息:“未加载EntityFramework.pdb ...包含查找模块EntityFramework.dll的源所需的调试信息”

这是一个已知的错误还是有人可以解释为什么当数组更大时它不起作用?

我正在使用.NET Framework 4.5,EntityFramework 6.1.3,EntityFramework6.Npgsql 3.0.3

c# postgresql linq linq-to-sql entity-framework-6
2个回答
0
投票

根据您的错误消息,执行堆栈溢出时引发的异常,因为它包含太多的嵌套方法调用。作为MSDN


0
投票

您可以尝试这样吗?

© www.soinside.com 2019 - 2024. All rights reserved.