【发布时间】:2017-03-19 13:38:56
【问题描述】:
我在 async 方法中有以下内容,其中传递了一个 dbContext 的实例:
var userIds = await GetUserIds(db);
使用 GetUserIds:
private async Task<List<int>> GetUserIds(AppContext db)
{
var items = await db.Items.Where(s => s.IsValid).Distinct().ToListAsync(); // simplified
return items;
}
但我明白了:
{"ObjectContext 实例已被释放,不能再被释放 用于需要连接的操作。"}
我可以通过删除await 和ToListAsync 来强制它运行,但显然这只是一个创可贴。为什么我的上下文被释放了?
【问题讨论】:
-
await不会处理DbContext。问题出在您尚未发布的代码中。一些 IoC 容器过于急于处置;这可能会导致您所看到的。 -
@StephenCleary 感谢您的持续帮助。我会贴出周围的代码。
标签: c# .net entity-framework asynchronous async-await