我們有一個典型的多層/層結構。應用程序+ WCF服務+存儲庫/ EF4 /數據庫。跨層/層處理對象圖的最佳方法是什麼?
我們正在使用定製版本的EF POCO T4模板來生成我們的實體,我們使用跨層/層。由於涉及額外的時間/工作,我們決定不使用DTO。
一個示例對象可能是一個森林,它可能具有可能具有樹葉導航屬性的樹的導航屬性。
什麼是最好的方法來添加葉子和處理對象圖?數據是從客戶端導入的,所以我們不一定知道數據庫中是否存在父林/樹。
查詢服務,並獲取任何現有的相關對象。爲相關對象附上圖形或創建新對象並在客戶端附上圖形。 例如:公共森林GetForest(字符串forestid) 然後---公共無效AddLeaf(葉葉)
創建森林,樹,和葉在客戶端對象和附加圖表。發送葉對象然後在服務器端執行邏輯以將對象與數據庫中的現有對象進行比較。根據需要剝離圖形,添加不存在的項目和/或附加到現有對象。 示例:public void AddLeaf(葉子葉)
在客戶端創建林,樹和葉對象,但不附加圖形。將對象發送到服務端,然後執行邏輯以將對象與數據庫中的現有對象進行比較。添加不存在的項目和/或附加到現有對象。 例如:公共無效AddLeaf(葉葉子,樹樹,森林林)
問題歸結爲邏輯應該在哪裏發生附上這些相關對象的圖形。 在一個側面說明中,當處理被序列化和反序列化的圖時,我有點擔心導航屬性的「修正」邏輯。看起來這可能會成爲一個昂貴的運營。
注意:客戶端應用程序是一個正在導入數據的Windows服務...因此它不一定是輕量級客戶端。 (我們不一定害怕增加邏輯。)
使用DTO的:通過層間的對象圖有時似乎是個好主意,但它會導致頭痛! – 2011-01-08 06:18:08
我認爲我們對我們的架構下一個改造,我們將結合的DTO,而是尋找一種方式,在一定程度上自動執行像automapper。 – 2011-01-09 01:19:45