C# Entity Framework бросает переполнение стека с помощью слишком большого количества CONCATC#

Место общения программистов C#
Ответить Пред. темаСлед. тема
Anonymous
 C# Entity Framework бросает переполнение стека с помощью слишком большого количества CONCAT

Сообщение Anonymous »

Когда я создаю запрос на DBSET с слишком большим количеством CONCAT или, где положения, я получаю ошибку переполнения стека. И положения все связаны с или предложениями. Это было бы немного похоже на:
(a и b) или (c и d) или ... < /p>
Положения создаются из списка, так что количество и Положения, которые объединяются с помощью или предложения или могут быть от 0 до тысячи. Я получаю переполнение стека. Надеюсь, кто -то знает, как это должно быть сделано, не возвращаясь к написанию встроенного SQL (идет против парадигмы структуры объекта) < /p>
Точная ошибка заключается в следующем: < /p>
Stack overflow.
Repeat 798 times:
--------------------------------
at Microsoft.EntityFrameworkCore.Query.Internal.ExpressionTreeFuncletizer.Visit[[System.__Canon, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.ObjectModel.ReadOnlyCollection`1, System.Func`2, StateType ByRef, State[] ByRef, Boolean)
at Microsoft.EntityFrameworkCore.Query.Internal.ExpressionTreeFuncletizer.Visit(System.Collections.ObjectModel.ReadOnlyCollection`1, StateType ByRef, State[] ByRef, Boolean)
at Microsoft.EntityFrameworkCore.Query.Internal.ExpressionTreeFuncletizer.VisitMethodCall(System.Linq.Expressions.MethodCallExpression)
at Microsoft.EntityFrameworkCore.Query.Internal.ExpressionTreeFuncletizer.Visit(System.Linq.Expressions.Expression)
--------------------------------
at Microsoft.EntityFrameworkCore.Query.Internal.ExpressionTreeFuncletizer.Visit[[System.__Canon, System.Private.CoreLib, Version=8.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.Collections.ObjectModel.ReadOnlyCollection`1, System.Func`2, StateType ByRef, State[] ByRef, Boolean)
at Microsoft.EntityFrameworkCore.Query.Internal.ExpressionTreeFuncletizer.Visit(System.Collections.ObjectModel.ReadOnlyCollection`1, StateType ByRef, State[] ByRef, Boolean)
< /code>
Библиотеки: < /p>
"EFCore.BulkExtensions.PostgreSql" Version="8.1.2"
"Microsoft.EntityFrameworkCore.Design" Version="9.0.0"
"Npgsql.EntityFrameworkCore.PostgreSQL" Version="9.0.2"
"Npgsql.EntityFrameworkCore.PostgreSQL.Design" Version="1.1.0"
< /code>
Вот какой -то пример кода для воспроизведения проблемы: < /p>
private class SimpleDbContext : DbContext
{
// Stores the values 0, 1, 2, ..., 100000
public virtual DbSet SequencePoints { get; set; }
}

private class SequencePoint
{
public int SequenceNumber { get; set; }
}

private void ConcatErrorTest()
{
SimpleDbContext simpleDbContext = new();

List selectRanges = new(); // 0, 10, 11, 20, 21, 21, etc...

for (int i = 0; i < 7500; i++)
{
int startRange = i * 10;
int endRange = startRange + (i % 5);
selectRanges.Add(new Tuple(startRange, endRange));
}

IQueryable queryable = null;
foreach (Tuple selectRange in selectRanges)
{
IQueryable whereQueryable = simpleDbContext.SequencePoints.AsQueryable().Where(point =>
(point.SequenceNumber >= selectRange.Item1) &&
(point.SequenceNumber sequenceNumber.SequenceNumber).ToList();

_logger.LogInformation("result = {result}", result);
}


Подробнее здесь: https://stackoverflow.com/questions/794 ... any-concat
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «C#»