我目前正在使用使用貧血域模型的代碼庫,並且我正嘗試將更多邏輯移入領域模型和域中的域模型驅動設計,但我正在努力解決以下問題。如何在存儲庫中的域模型上設置私有字段
我有一個名爲工作的域模型,它看起來像這樣,
public class Job
{
private DateTime _someOtherDate;
private DateTime _lastUpdated;
// this may be called from many different services
public void SetLastUpdated()
{
_lastUpdated = DateTime.UtcNow;
}
}
在某個時間點上,一個工作,我想工作的最後更新日期設置爲在該特定時間點上的處理過程中。爲此,我已經爲它創建了一個公共setter,就像你上面看到的那樣。
當我從存儲庫中的數據庫中取回作業時,會出現問題,因爲我現在沒有該字段的公共設置器,因爲我已將其限制爲SetLastUpdated()
。
有人可以請告知我如何可以允許此屬性在存儲庫實現中設置檢索作業時,但不是從服務,它只限於調用SetLastUpdated()
。
更新1)我已經更新了問題,因爲使用開始日期是一個不好的例子。
更新2)從給出的答案,我可以看到這個正在做的唯一途徑是通過在資源庫中不使用AutoMapper,構建作業時添加一個構造函數到工作類設置_LastUpdated,並使用該在存儲庫的作業檢索方法中返回。
你用什麼樣的模式來保溼你的域模型?你在使用ORM還是紀念品?你的構造函數是什麼樣的? – arootbeer 2014-10-27 15:16:14
我正在使用AutoMapper將實體框架模型映射回領域模型。這是開始日期將被設置的地方。在領域模型上沒有構造函數,它們在設計上是貧乏的。 – Jonathan 2014-10-27 15:22:30
與論壇網站不同,我們不使用「謝謝」或「任何幫助表示讚賞」,或在[so]上簽名。請參閱「[應該'嗨','謝謝',標語和致敬從帖子中刪除?](http://meta.stackexchange.com/questions/2950/should-hi-thanks-taglines-and-salutations-be - 刪除 - 從帖子)。 – 2014-10-27 15:38:55