我想在支付保存对 DbContext 的更改的成本之前将响应返回给客户端。我可以在返回响应后保存更改吗?由于上下文已被释放,简单地将其放入 ThreadPool.QueueUserWorkItem 会失败。
谢谢!
我想在支付保存对 DbContext 的更改的成本之前将响应返回给客户端。我可以在返回响应后保存更改吗?由于上下文已被释放,简单地将其放入 ThreadPool.QueueUserWorkItem 会失败。
谢谢!
在这种情况下,您处理 DbContext 时的逻辑太复杂而无法使用using
块;您需要手动处理。您的代码可能看起来更像:
DbContext context = null;
try
{
context = new DbContext();
var query = context.GetStuff();
ThreadPool.QueueUserWorkItem(_ =>
{
try
{
context.SaveChanges();
}
finally
{
context.Dispose();
}
});
}
catch
{
//dispose of the context only if there was an exception, as it
//meant we weren't able to get into the async task and dispose of it there
if (context != null)
context.Dispose();
throw;
}