从控制器调用以保存数据的代码仅在调试模式下逐行执行代码时才能正常工作,否则数据未保存在DB中,并且有时由于ObjectContext实例已被处置而无法在save方法上引发异常,并且不能不再用于需要连接的操作。
...
await Task.Run(() =>
{
var result = WorkUnit.CategoriesRepository.Insert(model);
});
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()并调用await仅完成了该工作。现在工作正常。