2016-11-05 54 views
-1

我已经在具有传递给它的dbContext实例的async方法如下:等待被设置的DbContext - 的ObjectContext的实例已经被设置

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实例已被处置,可以不再是用于需要连接的操作 。“}

我可以强制使用通过去除awaitToListAsync运行,但显然这只是一个创可贴。为什么我的环境被处置?

+2

'await'不会处理'DbContext'。问题出在你没有发布的代码上。一些IoC集装箱太急于处理它们;这可能会导致你所看到的。 –

+0

@StephenCleary感谢您的继续帮助。我会张贴周围的代码。 – SB2055

回答

3

我怀疑你的GetUserIds方法的调用者正在操作完成前处理上下文。在处理上下文之前是否确定要等待返回的任务?

相关问题