在最近使用 ASP.Net Core 2.0 和 Entity Framework Core在進行開發時遇到的問題中,發生錯誤:「在上一個操作完成之前在此上下文上開始了第二個操作。」此異常由InvalidOperationException,表示在前一個操作完成之前,在同一上下文上啟動了多個操作。
檢查程式碼庫,負責填入具有各種屬性和相關資料的實體清單的方法被確定為罪魁禍首。有問題的方法包括使用 Include 語句進行查詢以合併相關實體,並將這些實體對應到視圖模型。
根本問題的根源在於整個應用程式中解決和使用 DbContext 的方式。當使用 IoC(控制反轉)進行依賴注入時,DbContext 應註冊為 Transient。這需要使用以下程式碼片段:
services.AddDbContext<MyContext>(ServiceLifetime.Transient);
或
services.AddTransient<MyContext>();
而不是:
services.AddDbContext<MyContext>();
預設行為是將DbContext當一個執行緒同時存取上下文時,這可能會導致衝突。
此外,非同步操作和非同步 lambda 表達式可能會加劇此問題。對 DbContext 使用 Transient 會為每個類別授予其實例,從而防止跨多個類別對實體進行任何更改。
有關此異常的更多見解,請參閱以下資源: [https://docs.microsoft.com/en-us/ef/core/miscellaneous/warnings/second-operation-started](https ://docs.microsoft.com/en-us/ef/core/miscellaneous/警告/第二次操作開始)
以上是為什麼我的 Entity Framework Core 應用程式會拋出「第二個操作已開始」錯誤,如何修復它?的詳細內容。更多資訊請關注PHP中文網其他相關文章!