2011-12-18 60 views
2

我開始使用DDD(使用C#)開始我的第一個項目,在這個階段,我覺得我們可能會使用MongoDB或者CouchDB來進行持久化(像Entity框架這樣的ORM似乎對我們想要的太過於矯枉過正),但是說現階段我在MongoDB或CouchDB中幾乎沒有任何經驗。如何使用Mongodb/Couchdb創建我的DDD實體?

當我創建我的域名時,我想過使用GUIDS作爲我實體的ID(來自關係數據庫世界,仍然無法擺脫它)。

如果我走這條路線,我可以輕鬆插入我的持久層(mongoDB/CouchDB),或者我必須更改我的域模型(目前我的實體對象上的構造函數有一個字符串ID作爲參數(這將是GUID ID))。

JD

回答

2

用MongoDB的您probbly希望讓每個聚合根的集合,這意味着你的總根源需要IDS,因爲他們將在數據庫中的文件。如果你想讓你的域模型免費使用MongoDB特定的代碼,這些ID可以是字符串。

我不會在構造函數參數中包含id。我只是讓它們成爲可寫屬性。與ORM一樣,我會考慮通過存儲庫來處理實體的讀取和存儲。並保持MongoDB代碼在那裏。

+0

謝謝。我還是DDD的新手,我記得你不應該有可寫的屬性(我可能是錯的)。那麼對於mongoDB,我只需要獲取文檔並解析它,或者它會自動填充我的域聚合? – 2011-12-18 20:27:53

+0

官方的mongo C#驅動程序可以讓你的實體變得豐富多彩。 – 2011-12-19 00:39:33