System.InvalidOperationException: Invalid operation. The connection is closed.
at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__169_0(Task`1 result)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
S>>как тут искать причину ошибки? vaa>Это весь стэк? ошибка случайная или стабильная? vaa>в параметрах не передаются ли массивы большого размера?
ошибка стабильная.
в корне ошибки такое
а в inner exception что выше написал
Microsoft.EntityFrameworkCore.DbUpdateException: An error occurred while updating the entries. See the inner exception for details.
---> System.InvalidOperationException: Invalid operation. The connection is closed.
at Microsoft.Data.SqlClient.SqlCommand.<>c.<ExecuteDbDataReaderAsync>b__169_0(Task`1 result)
at System.Threading.Tasks.ContinuationResultTaskFromResultTask`2.InnerInvoke()
at System.Threading.Tasks.Task.<>c.<.cctor>b__274_0(Object obj)
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
--- End of stack trace from previous location where exception was thrown ---
at System.Threading.ExecutionContext.RunInternal(ExecutionContext executionContext, ContextCallback callback, Object state)
at System.Threading.Tasks.Task.ExecuteWithThreadLocal(Task& currentTaskSlot, Thread threadPoolThread)
--- End of stack trace from previous location where exception was thrown ---
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReaderAsync(RelationalCommandParameterObject parameterObject, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at Microsoft.EntityFrameworkCore.Update.ReaderModificationCommandBatch.ExecuteAsync(IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.Update.Internal.BatchExecutor.ExecuteAsync(IEnumerable`1 commandBatches, IRelationalConnection connection, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(IList`1 entriesToSave, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.ChangeTracking.Internal.StateManager.SaveChangesAsync(DbContext _, Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.ExecuteAsync[TState,TResult](TState state, Func`4 operation, Func`4 verifySucceeded, CancellationToken cancellationToken)
at Microsoft.EntityFrameworkCore.DbContext.SaveChangesAsync(Boolean acceptAllChangesOnSuccess, CancellationToken cancellationToken)
at AutoProcess.Core.Presenations.ProcessBuild.SaveAsync(SubmitModel dataModel, CancellationToken ct) in AutoProcess.Core.Presenations.ProcessBuild.cs:line 204
Здравствуйте, snaphold, Вы писали:
S>Есть куча операций в ЕФ контекстом и при Сейве
Я бы глянул в
— Event Log (если вы на Windows)
— в логах самого SQL
Я тут не претендую на роль гуру, но вроде как закрытие соединения указывает на (условно говоря) некую инфраструктурную проблему. Т.е. это не триггер/констрейнт сработал (там всегда нормальна SQL ошибка возвращается).
R>>using (var db = GetDataContext())
R>> returnawait db.Persons.ToListAsync();
R>> // ^^^^^
R>> // Скорее всего пропущен
R>>
S>Чётко! странно что текст ошибки про это не говорит
Так это не ошибка, эвэйт говорит подождать, если не подождать то основной поток продолжит выполнение.
пишите на F# там компилятор намного строже к таким вещам.
R>>>using (var db = GetDataContext())
R>>> returnawait db.Persons.ToListAsync();
R>>> // ^^^^^
R>>> // Скорее всего пропущен
R>>>
S>>Чётко! странно что текст ошибки про это не говорит
vaa>Так это не ошибка, эвэйт говорит подождать, если не подождать то основной поток продолжит выполнение. vaa>пишите на F# там компилятор намного строже к таким вещам.
Там скорее всего был warning CS1998: This async method lacks 'await' operators and will run synchronously.
Можно на него ориентироваться.
R>>>>using (var db = GetDataContext())
R>>>> returnawait db.Persons.ToListAsync();
R>>>> // ^^^^^
R>>>> // Скорее всего пропущен
R>>>>
S>>>Чётко! странно что текст ошибки про это не говорит
vaa>>Так это не ошибка, эвэйт говорит подождать, если не подождать то основной поток продолжит выполнение. vaa>>пишите на F# там компилятор намного строже к таким вещам.
M>Там скорее всего был warning CS1998: This async method lacks 'await' operators and will run synchronously. M>Можно на него ориентироваться.
M>А чего F# выдал бы в аналогичной ситуации?