2010-08-12 31 views
0

我有一個方法在我的服務中創建一些實體,在我調用我的存儲庫的Add方法的方法內,以便實體在我調用我的save方法時被持久化,我應該在服務類之外或在將實體添加到datacontext的方法內部調用Save方法?何時堅持您的業務實體在您的服務類

回答

1

服務類必須立志成爲自包含的,並且必須照顧爲其使用的存儲庫調用自己的save()方法。這樣,它允許從其消費者中抽取存儲庫。如果它選擇放棄存儲庫呢?如果被調用者負責執行save(),則被調用者()也必須改變。這會導致代碼脆弱。

但是,交易是另一回事。

如果被調用者已經啓動了服務類,則該服務類必須參與全局事務。在沒有全局事務的情況下,服務類必須啓動並結束自己的事務。因此,save()方法實際上只會在事務結束時「提交」,無論它是由服務類本身還是由被調用者啓動的。

0

我會問,爲什麼你會創建一些實體?有可能最終唯一的原因就是堅持下去。按照定義,你的服務類將是一個更好的觸發持久化過程的地方。數據上下文中的實體只應關注響應來自服務的命令。

相關問題