Я использую Entity Framework для выполнения хранимых процедур (Azure SQL Server) в моей базе данных.Структура объекта: InvalidOperationException: Неверная операция. Соединение закрыто.
Мой C# код выглядит следующим образом:
using (var context = new MyDataContext())
numberOfEffectedRows = context.MySPName(this.Id);
В большинстве случаев (99,9%) из казней, это работает отлично. Но иногда это не удалось с этой ошибкой:
System.InvalidOperationException: Invalid operation. The connection is closed.
at System.Data.SqlClient.SqlInternalConnectionTds.ValidateConnectionForExecute(SqlCommand command)
at System.Data.SqlClient.SqlInternalTransaction.Rollback()
at System.Data.SqlClient.SqlInternalTransaction.Dispose(Boolean disposing)
at System.Data.SqlClient.SqlTransaction.Dispose(Boolean disposing)
at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext](TTarget target, Action`2 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
at System.Data.Entity.Infrastructure.Interception.DbTransactionDispatcher.Dispose(DbTransaction transaction, DbInterceptionContext interceptionContext)
at System.Data.Entity.Core.EntityClient.EntityTransaction.Dispose(Boolean disposing)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteInTransaction[T](Func`1 func, IDbExecutionStrategy executionStrategy, Boolean startLocalTransaction, Boolean releaseConnectionOnSuccess)
at System.Data.Entity.Core.Objects.ObjectContext.<>c__DisplayClass4b.<ExecuteFunction>b__49()
at System.Data.Entity.SqlServer.DefaultSqlExecutionStrategy.Execute[TResult](Func`1 operation)
at System.Data.Entity.Core.Objects.ObjectContext.ExecuteFunction(String functionName, ObjectParameter[] parameters)
at ***.MyDataContext.MySPName(Nullable`1 Id) in ***
at ***.DoSomething() in ***
Когда это происходит:
- Я не знаю, почему это происходит. Мне кажется рандомизированным.
- Я не знаю, было ли выполнено мое «MySPName» или нет.
Кто-то знает, почему это происходит и как я могу узнать, выполняется ли моя хранимая процедура или нет?
фрагмент кода вы вставили один метание исключение? – neo
Да. Согласно StackTrace, строка кода 'context.MySPName (this.Id);' является источником исключения. – No1Lives4Ever
@ No1Lives4Ever Убедитесь, что вы перечислили запрос перед тем, как оставить оператор using, EF использует отложенное выполнение –