1

我在存儲庫模式中使用實體框架4.0來填充另一個程序集中的我的POCO對象。我的一個對象包含來自數據庫的XML列(類中的字符串類型)。使用實體框架資源庫到POCO構建自定義對象的問題使用實體框架資源庫到POCO

不幸的是,這個XML字符串包含主鍵ID,我需要用它來檢索其他對象(使用存儲庫)來構建另一個自定義對象。我一直試圖在域對象上使用自定義的get訪問器來嘗試解析XML,然後從存儲庫中讀取。問題是這導致我的模型需要存儲庫並給我一個循環依賴。

有沒有什麼好的方法來做這樣的事情?也許一些自定義代碼來解析EF庫中的XML列,並將我需要的東西映射到模型中的自定義對象上?

任何反應非常感謝,謝謝!

回答

0

不,沒有辦法告訴EF XML列實際上是其他實體類型。一旦將邏輯移至get訪問器,您確實會中斷創建依賴於持久性的模型,這是您嘗試使用POCO刪除的內容。它會打破你的域名驅動設計。

在域驅動的設計加載對象是存儲庫的嚴格責任。所以,你需要建立自己的檢索方法,可以讓你請求加載相關實體的方式,例如:

  • 負荷主要對象,解析XML和負荷關係,在同一倉庫的方法
  • 或加載主要對象在另一種方法

如果主要對象不是關係聚合根單一的方法和解析XML和負荷關係(它們可以單獨存在),你應該創建相關對象獨立的存儲設備和揭露方法只加載定義的對象通過XML字符串。