天天看點

Entity Framework:如果允許模型處于非法狀态,在某些場景下,記得清空DbContext

之前寫過兩篇文章介紹模型的合法性:

DDD:關于模型的合法性,Entity.IsValid()合理嗎?

.NET:關于資料模型、領域模型和視圖模型的一些思考

今天讨論的問題其實是關于“主鍵映射”的,隻是其中還涉及一種決策:“允許模型處于非常狀态”。

第一個輸出之是以不是期望的結果是因為EntityFramework内置了主鍵映射模式,記憶體狀态還是處于非法狀态,雖然First會導緻一次資料庫往返。

第二個輸出之是以正确是因為清空了主鍵映射,這樣會導緻重新用資料庫的内容填充主鍵映射。

出現異常最好終止線程或程式的執行,上邊這種BUG是因為使用了一種異常反模式:“把異常作為正常的邏輯處理流程”。

這個錯誤我犯過,後來的朋友也犯過。

·