GenericRepository模式在逐行执行中没有错误,但是抛出ObjectContext实例已在插入数据时以普通模式放置

问题描述 投票:-1回答:1

从控制器调用以保存数据的代码仅在调试模式下逐行执行代码时才能正常工作,否则数据未保存在DB中,并且有时由于ObjectContext实例已被处置而无法在save方法上引发异常,并且不能不再用于需要连接的操作。

控制器

 ...
 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;
        }
    }
entity-framework asp.net-web-api repository-pattern
1个回答
0
投票

从控制器中删除Task.Run()并调用await仅完成了该工作。现在工作正常。

© www.soinside.com 2019 - 2024. All rights reserved.