Шаблон GenericRepository: нет ошибок при построчном выполнении, но выбрасывается Экземпляр ObjectContext был расположен в обычном режиме при вставке данных. - PullRequest
0 голосов
/ 11 марта 2020

Этот код при вызове из контроллера для сохранения данных работает нормально только тогда, когда код выполняется построчно в режиме отладки, в противном случае данные не сохраняются в БД и иногда выдают исключение в методе сохранения, поскольку экземпляр ObjectContext был удален и может больше не используется для операций, требующих подключения.

Контроллер

 ...
 await Task.Run(() =>
  {
     var result = WorkUnit.CategoriesRepository.Insert(model);
  });

GenericRepsitory.cs

public async Task<int> Insert(TModel model)
    {
        var entity = Mapper.Map<TEntity>(model);
        _DbSet.Add(entity);
        return await Save();
    }
    public async Task<int> Save()
    {
        try
        {                     
             return   await _context.SaveChangesAsync();                                            
        }
        catch (DbEntityValidationException ex)
        {
            Console.Write(ex.ToString());
            return 0;
        }
        catch (Exception ex)
        {
            Console.Write(ex.ToString());
            return 0;
        }
    }

1 Ответ

0 голосов
/ 13 марта 2020

Удалите Task.Run () из контроллера и вызовите с ожиданием только выполненной работы. сейчас работает нормально.

...