我想用的是吉米·尼爾森在他的書中Applying DDD with Patterns提到的一個想法,那就是,如果我有一個像產品例如,我將一個實體喜歡拍攝該實體的歷史信息的快照,類似ProductSnapshot但我想知道我可以如何實現這與一個ORM(我目前正在使用實體框架)。我現在面臨的主要問題是,如果我有另一實體像訂單行是通過其構造函數接收產品那麼實體框架將需要你做的那種類型的公共財產要持續存在,因此這會強迫我有這樣的事情:管理實體和其快照與ORM
class OrderLine {
public Product Original Product {get; set;}
public ProductSnapshot Snapshot {get; set;}
}
,這似乎笨拙,不直觀,我不知道如何處理得當,當涉及到數據綁定(對哪些財產我應該綁定)最後我認爲產品是實體而ProductSnapshot是值對象加上訂單行被接受時,快照只取,之後不需要產品。
您如何看待綁定問題,因爲如果我只有一個ProductSnapshot類型的屬性,那麼該屬性將爲null,直到OrderLine被確認,並且同樣的事情會發生,如果我有一個產品類型的屬性,但在相反的情況? –
我想你誤解了我。產品快照是一個將由存儲庫保存的業務對象。 OrderLine類可能包含產品快照,但這不是EF問題。存儲庫應該知道如何在有或沒有產品或快照的情況下組裝ORDERLine。該存儲庫使用EF來獲取相關數據,然後將所有內容放在一起。簡而言之,保持Domain和Persistence層分離,並且在建模業務對象時不要混合ORM。 ORM可幫助您更輕鬆地使用db,但存儲庫負責處理業務對象。 – MikeSW
您必須決定此處的OrderLine,Product和ProductSnapshot是否是業務對象,或者它們是我希望不用於對域進行建模的EF實體。 – MikeSW