2013-04-18 125 views
0

我是DDD的新手,但嘗試在我的新項目中使用DDD創意。我也使用實體框架(EDMX)。關於DDD的一些知識是避免在域對象中使用公共設置器。如果它是正確的,我如何將我的EF實體(Ef生成的類)映射到我的域對象?我是否必須將所有初始值都放在構造函數中?DDD以及如何將EF實體映射到域對象?

任何幫助表示讚賞!

回答

1

使用EDMX文件時,您不需要在您的實體中擁有公共設置器。您可以change setter accessibility。之後,您可以將EF實體用作域實體和EF複合類型作爲值對象。它仍然有一些限制,所以有時你不得不忍受不太理想的設計來適應EF的需求。

+0

謝謝,但如果我已經有域實體,並且想要映射EF實體到那些?也許我的問題應該是:我如何映射到具有私人設置器的域實體? (不管數據獲取技術如何)。 –

+0

私人setter仍然有可能(但[setter必須存在](http://stackoverflow.com/questions/3574333/ef-4-0-mapping-to-readonly-property-with-private-field)) –

+1

@ Erik Z:你可以通過反射訪問一個私人二傳手,或事件私人只讀領域。或者,如果可能的話,您可以嘗試使用構造函數注入。總體而言,我會嘗試無效EF映射對象和域對象之間的映射。只需直接映射到域對象即可。這樣你可以獲得變更追蹤等。 – eulerfx