2011-02-07 235 views
1

使用WCF服務與DataContracts VS實體框架實體對象有什麼優點和缺點?WCF服務與DataContracts VS默認實體框架實體對象

如果我使用ADO.net自我跟蹤實體生成器在我的數據層中生成數據合同。

在我的WCF服務中使用它的最佳方式是什麼? 數據合同生成的ADO.net自我跟蹤實體生成器是否會通過服務進行驗證,或者WCF服務仍將使用默認的實體框架對象?

回答

1

STE(自我跟蹤實體)的主要優勢是變更集的實施。這意味着您可以從Web服務的操作修改實體(或整個實體圖)返回STE,並調用另一個操作將更新後的STE發回Web服務進行處理。 EF將自動檢測STE中的變化並處理它們。

這對於實體框架實體是不可能的,因爲它只能在實體附加到ObjectContext時跟蹤更改,但實體在從Web服務操作返回時分離。

STE的缺點是您必須共享在服務和所有客戶端之間定義它們的程序集。 STE are not for interoperable解決方案。

目前大多數項目都使用第三種類型的實體開發 - POCOs。當從ObjectContext分離時,POCO也無法追蹤更改。這是STE的特點。

+0

看起來像我將不得不深入到POCO'A – 2011-02-07 19:02:46

0

這取決於你在做什麼類型的工作。

使用DTO(數據傳輸對象)來構成您的數據合同並與EF模型分開,可以讓您更好地控制序列化與否。這對於與多個客戶端的兼容性和版本控制很重要。

http://martinfowler.com/eaaCatalog/dataTransferObject.html

使用EF與POCO可能是未來控制和分離與去年默認數據庫生成形式的條款。但是,與Silverlight客戶端一起使用時,這兩者更易於使用並且更加靈活。

+0

謝謝Jtew我會研究POCO,看看是否適合我。 – 2011-02-07 19:01:40