對於一個乾淨的數據模型,我來回在這...實體框架最佳實踐:什麼層應調用SaveChanges()?
使用審批工作流程作爲一個例子,讓我們在我的web應用程序說我有一個頁面,讓用戶標記一個MyEntityObject
爲批准。 MyEntityObject
有一些屬性可以控制其審批工作流程,所以我有一個常見的實用方法,名爲FlagForApproval(MyEntityObject eo)
。
如若頁面呼叫FlagForApproval()只設置必要的屬性,然後調用的SaveChanges (),當它準備好了,還是應該FlagForApproval()保存更改?
使用實用方法保存更改看起來好像比要求做的要多一點(如果它只是一系列操作中的一步?),但同時使頁面調用SaveChanges( )並將數據提交給數據庫似乎可能被認爲太接近數據層責任。
想法?
(更新:FWIW,到目前爲止,我一直有實用方法調用的SaveChanges(),這樣的頁面只有一組異常處理,是否驗證或數據。)
我認爲你是100%正確的 - 這是非常乾淨,以保持在調用SaveChanges BLL,讓它決定是否執行保存或不。但我可以看到至少有兩種情況,哪裏可以發生異常: 1)該項目需要在模型方面進行驗證 - 它不是BLL,而是必須確定是否應該保存更改。 2)SaveChanges是在真正簡單的代碼(添加實體,更新現有實體的單個屬性)後執行的。在我的情況下,它將是DAL。 所以我想最好的解決方案是遵循你的直覺和/或經驗。 – 2010-01-16 17:01:58