簡體   English   中英

EF Core 不會在 SaveChanges()/SaveChangesAsync() 上引發異常

[英]EF Core doesn't throw exceptions on SaveChanges()/SaveChangesAsync()

我有解決方案,其中包含數據層信息(所有模型和 dbContext)的項目由 windows 服務項目和 ASP.NET MVC 應用程序引用,因為它們使用相同的數據結構。

最近在處理 windows 服務時,我注意到調試器中的 memory 使用量很大,當出現約束問題但沒有引發錯誤時。 當我對其進行故障排除時,我意識到方法SaveChanges()SaveChangesAsync()永遠不會拋出任何類型的異常,因此我無法在 try/catch 塊中捕獲異常。 我可以在 output window 中看到錯誤“執行 DbCommand 失敗 ...”,但程序將繼續在 DbContext 和 memory 中運行一些循環,並且不會出現崩潰。

我設法記錄了使用不存在的 FK 創建新位置條目的跟蹤日志,似乎在 dbContext 中發生錯誤后,EF 為 DbContext 中定義的每個 DBSet 啟動“選擇”查詢,並開始跟蹤 select 查詢結果中的每個實體。 您可以在下面看到登錄圖片的那部分...

在此處輸入圖像描述

我嘗試使用 EF Core 創建新的 ASP.NET MVC 項目,但無法在干凈的項目中重現此問題,因此此問題可能存在於配置或類似問題中。

This whole solution originally started on .NET Framework 4.5 and was later converted(rewritten) to .NET Core 3.1 and finally updated to .NET 5. Data layer was extracted in separate project from MVC project on .NET Core 3.1 version when windows service was needed. 我已將每個 package 更新到最新版本,我嘗試了 DbContext 和日志記錄解決方案的不同配置選項,但沒有任何改變。 我可以通過手動為任何 model 上的約束設置錯誤的 ID 來重現此問題,因此它與特定的 Model 或驗證無關。 不幸的是,我無法確定這種行為成為解決方案的確切時間......

有誰知道導致這種行為的原因或從哪里開始對其進行故障排除?

與 EF Core 一起使用時,Serilog.Exceptions 是一個眾所周知的問題,請參閱此處的詳細文檔: https://github.com/RehanSaeed/Serilog.Exceptions#serilogexceptionsentityframeworkcore

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM