Как исправить проблему с подключением System.InvalidOperationException - PullRequest
0 голосов
/ 04 июля 2019

Мое приложение всегда вызывает ошибку System.InvalidOperationException при загрузке.Я использую dbContext для каждого метода в моем контроллере.Что мне нужно сделать для устранения ошибки?

Я изменил доступ dbContext со статического на частный.Я удалил dbContext.

Есть ли способ сделать это правильно без оператора using?

Начальный и объявить dbContext

public class AdjustmentController : BaseController
{
    private DBEntities db = new DBEntities();
}

Удалить dbContext

protected override void Dispose(bool disposing)
{
    if (disposing)
        db.Dispose();

    base.Dispose(disposing);
}

Вызов dbContext

public ActionResult Details(string ID)
{
    var data = db.GetAdjustmentByID(ID);

    var model = new AdjustmentViewModel()
    {
        ID = data.ID,
    }

    return View(model);
}

Сообщение об исключении

System.InvalidOperationException: ExecuteReader requires an open and available Connection. The connection's current state is open.
   at System.Data.SqlClient.SqlConnection.GetOpenConnection(String method)
   at System.Data.SqlClient.SqlConnection.ValidateConnectionForExecute(String method, SqlCommand command)
   at System.Data.SqlClient.SqlCommand.ValidateCommand(String method, Boolean async)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, TaskCompletionSource`1 completion, Int32 timeout, Task& task, Boolean& usedCache, Boolean asyncWrite, Boolean inRetry)
   at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)
   at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.<Reader>b__c(DbCommand t, DbCommandInterceptionContext`1 c)
   at System.Data.Entity.Infrastructure.Interception.InternalDispatcher`1.Dispatch[TTarget,TInterceptionContext,TResult](TTarget target, Func`3 operation, TInterceptionContext interceptionContext, Action`3 executing, Action`3 executed)
   at System.Data.Entity.Infrastructure.Interception.DbCommandDispatcher.Reader(DbCommand command, DbCommandInterceptionContext interceptionContext)
   at System.Data.Entity.Internal.InterceptableDbCommand.ExecuteDbDataReader(CommandBehavior behavior)
   at System.Data.Common.DbCommand.ExecuteReader(CommandBehavior behavior)
   at System.Data.Entity.Core.EntityClient.Internal.EntityCommandDefinition.ExecuteStoreCommands(EntityCommand entityCommand, CommandBehavior behavior)

Я ожидаю, чтобы исправить эту проблему без оператора using.

...