2011-09-20 48 views
1

我將有一個將連接到WCF Web服務的asp.net MVC。該服務定義了數據庫連接。DataModel與DataContract vs. ViewModel

我注意到我會有3個不同的模型/數據類。

首先是來自MVC的ViewModel傢伙。我想這可能與數據庫在數據庫中的表現有所不同。

其次是DataModels,poco定義了對象在數據庫中的外觀。

然後是DataContract人員,它定義了通過WCF服務傳輸的對象的外觀。猜測它可能幾乎是ViewModel或DataModel的表示。

這是一種矯枉過正還是一種必然的邪惡?我應該將DataContracts定義爲ViewModel組件,或者甚至是DataModels。

你會怎麼做,你會如何拆分成組件?

回答

1

我會保持他們所有獨立的,因爲你提到他們每個人都有一個不同的層來處理(即屬於)與應該是單獨的對象來處理任何未來的變化。

將通過引用屬於您的wcf服務的服務來創建wcf項目。你的數據模型應該在模型項目或數據訪問項目中,並且你的MVC應用程序中的ViewModel,儘管如果你願意的話你可以從那裏破解,但是由於它與MVC應用程序的緊密耦合,這是有爭議的。

1

我應該定義爲DataContracts在ViewModel傢伙也許,

當然不是。 ViewModels是以屏幕(用例)爲導向的。
但是,您可能會在SilverLight或jQuery客戶端使用的DataService中執行此操作。

甚至是DataModels。

這可能是有道理的。 POCO的原因之一是它們甚至可以是同一類。