[英]DDD and Repository pattern where to put behavior concerning CRUD
我嘗試在我的域模型中加入盡可能多的業務邏輯。
每次更新MyEntity時,我希望發生兩件事:
如果實體不是聚合根的子代。
通常,我將從存儲庫中獲取特定實體。 更改實體並保留它
使用MyRepository.Save()返回數據庫
在這種情況下,我必須將業務邏輯放在我的應用程序或DAL中,而不是域模型中。 我試圖避免使用業務邏輯層,除非絕對必要,但是除非我使用名為MyEntity.Update()的方法或類似的方法,否則我似乎無法適應這一要求,但是我有一種不正確的感覺做到的方式。
首先讓我說一下,我不反對存儲庫模式。 我最近在一個項目上成功使用了一個。
我要說的是謹慎行事……如果您不能將需求封裝在對象中,則可能需要再次考慮面向對象的方法。 為了執行其他操作而引入數據訪問層似乎是一種代碼味道。 我已經使用服務層來接收請求,管理事務和版本控制,但是沒有用於諸如驗證之類的其他事情。 潛在地,您的服務業者可能如下所示。
public enum UpdateResult
{
Success,
NoMyEntityFound,
StaleData,
InvalidRequest
}
public class MyService
{
...
...
public UpdateResult Update(...)
{
...Start Tran
...Load var m = MyEntity
...do the bare minimum here
...m.Update()
...Commit Tran
return UpdateResult.Success;
}
}
話雖如此,存儲庫上的警告尾巴
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.