單元測試 前言 時隔多個月,終於抽空學習了點新知識,那麼這次來記錄一下C#怎麼進行單元測試,單元測試是做什麼的。 我相信大部分剛畢業的都很疑惑單元測試是乾什麼的?在小廠實習了6個月後,我發現每天除了寫CRUD就是寫CRUD,幾乎用不到單元測試。寫完一個功能直接上手去測,當然這隻是我個人感受,僅供參考 ...
-
第一個問題:在涉及多次含有資料庫(dbContext)修改操作的函數,出現偶發修改失敗。
原因:
在非同步多線程的情況下,當一個線程創建 DbContext 對象,然後進行一些實體狀態修改,還沒有來得及將狀態保存,另一個線程也進行了同樣的操作,第一個線程可以 SaveChanges 成功,但是第二個線程肯定會報錯,因為實體狀態已經被另外一個線程中的 DbContext 應用了。 -
第二個問題:含有資料庫(dbContext)修改操作的函數單次執行成功的情況下出現資料庫修改失敗的情況
原因:
生命周期背景:dbContext是瞬時的,銷毀在每一個請求中。
1)修改請求 =》 調用savechangeAsync()
2)刷新頁面請求 =》 也要調用dbContext
由於savechangeAsync()非同步,所以可能導致修改請求的中的dbContext未完成,第二次的刷新請求又嘗試連接資料庫進行讀取數據,就會出現在資料庫寫操作時進行讀操作