2016-01-22 70 views
0

我讀到了LINQ的,這是懶加載所以它可能會導致dbcontext錯誤。但是,我正在使用await,根據我的理解,等待Linq查詢完成。但是,我仍然得到dbcontext has been disposed error。這是我的代碼使用的await並仍然得到一個的DbContext已配置錯誤

public async Task DeleteAudit(int mInt) 
    { 
     var audit = await _AuditRepository.FindBy(a => a.MInt == mInt).FirstOrDefaultAsync(); 
     _AuditRepository.Delete(audit); 

     await _AuditRepository.SaveChangesAsync(); 

    } 

我想要做的是從_AuditRepository刪除mInt匹配的行。

+4

'我正在使用await,從我的理解中等待,直到Linq查詢完成。「不,這不是它所做的。它將剩餘的方法作爲正在等待的任務的延續運行,然後立即將控制權返回給調用方,以便繼續執行代碼。總的來說,它*不會等待。 – Servy

+1

這不足以重現問題;你有沒有看到如何運用這種方法,倉庫,當它配置的範圍等 – Servy

+1

'await'不能解決延遲加載的問題。實際上,'await'與懶加載的交互性很差。如果您打算使用異步查詢,我建議您根本不要使用延遲加載。 –

回答

0

我想,你將需要somethink這樣,使這個交易原子。

public async Task DeleteAudit(int mInt) 
    { 
     var ctx = new _AuditRepository(connectionString); 
     var audit = await ctx.FindBy(a => a.MInt == mInt).FirstOrDefaultAsync(); 
     _AuditRepository.Delete(audit); 

     await ctx.SaveChangesAsync(); 
     ctx.Dispose() 

    } 
相關問題