2016-11-05 73 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方法的調用者正在操作完成前處理上下文。在處理上下文之前是否確定要等待返回的任務?

相關問題