之前寫過兩篇文章介紹模型的合法性:
DDD:關于模型的合法性,Entity.IsValid()合理嗎?
.NET:關于資料模型、領域模型和視圖模型的一些思考
今天讨論的問題其實是關于“主鍵映射”的,隻是其中還涉及一種決策:“允許模型處于非常狀态”。
第一個輸出之是以不是期望的結果是因為EntityFramework内置了主鍵映射模式,記憶體狀态還是處于非法狀态,雖然First會導緻一次資料庫往返。
第二個輸出之是以正确是因為清空了主鍵映射,這樣會導緻重新用資料庫的内容填充主鍵映射。
出現異常最好終止線程或程式的執行,上邊這種BUG是因為使用了一種異常反模式:“把異常作為正常的邏輯處理流程”。
這個錯誤我犯過,後來的朋友也犯過。
·