GenericRepository模式在逐行执行时没有错误,但抛出ObjectContext实例已在插入数据时以正常模式



当从控制器调用以保存数据时,此代码只有在调试模式下代码逐行执行时才能正常工作,否则数据不会保存在DB中,有时还会在保存方法上引发异常,因为ObjectContext实例已被释放,无法再用于需要连接的操作。

控制器

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

GenericRepository.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;
}
}

从控制器中删除Task.Run((并用wait调用只完成任务。它现在运行良好。

最新更新