none
Entity Framefork Core получить dbContext в классе RRS feed

  • Вопрос

  • Всем привет,

    в проекте ASP NET Core используется Entity Framework Core.

    Из метода контроллера Home вызываю Task.Run для метода экземпляра класса MyClass, где необходимо обратиться к данным из БД.

    Пробовал передавать _dbContext в конструктор класса MyClass, но получаю исключение "Cannot access a disposed object."

    HomeController

    [EnableCors("AllowAllOrigin")]
    [Route("api/[controller]")]
    [ApiController]
    public class HomeController : ControllerBase
    {
       private readonly DataBaseContext _dbContext;
    
       public HomeController (DataBaseContext dbContext)
       {
          _dbContext = dbContext;
       }
    
       [EnableCors("AllowAllOrigin")]
       [HttpPost("[action]")]
       public string UpdateBotSettings()
       {
          MyClass myClass = new MyClass(_dbContext);
          Task task = Task.Run(() => myClass.AnyMethod());
       }
    }

    MyClass

    public class MyClass
    {
       private readonly DataBaseContext _dbContext;
       
       public MyClass(DataBaseContext dbContext)
       {
          _dbContext = dbContext;
       }
    
       public async void AnyMethodAsync()
       {
          MyData myData = _dbContext.AnyData.Where(d => d.id == 1).FirstOrDefault(); // --- тут возникает исключение
       }
    }


    Подскажите, пожалуйста, как получить доступ к dbContext внутри экземпляра класса MyClass?

    20 февраля 2019 г. 8:30

Все ответы

  • Код выше не имеет смысла (ничего не делает) и, судя по всему, даже не компилируется.

    Что до ошибки (считая что у вас есть версия кода которая может быть скомпилирована), то скорее всего вы где то вызывайте Dispose() на контекст. Найдите это место и перестаньте так делать.


    This posting is provided "AS IS" with no warranties, and confers no rights.

    20 февраля 2019 г. 17:24
    Модератор