我最近閱讀了關於ViewModel及其優點。我能夠理解爲什麼它是必要的,但是我的問題是如果我有兩個類爲同一個對象(即人類),我不使代碼冗餘?此外,它不會使未來的更改有點困難,因爲您需要確保基類模型和視圖模型具有相同數量的屬性是正確的?例如,讓我們說,我有一個名爲Person表具有ViewModel Redundancy Clarification
- ID
- 名稱
- 顏色
我創建用於創建NHibernate的映射一個HBM。我有以下的模型類
public class Person {
public int ID {get;set;}
public string Name {get;set;}
public string color {get;set;} }
如果我是正確的,視圖模型類應該看起來像
public class PersonViewModel {
[DisplayName("Full Name")]
public string Name {get;set;}
[DisplayName("Favourite Color")]
public string color {get;set;}
}
首先,我有兩個類新指在數據庫中同一個對象。即使一個類用於數據庫目的,另一個類用於查看目的,我們仍然有兩個具有完全相同元數據的類。其次,如果我在數據庫中引入一個新字段,我需要將它添加到三個位置,即基本模型類,視圖模型類和HBM文件。
如果我錯了,請糾正我,這怎麼可以被稱爲代碼優化或最佳實踐。
所以你說它最好的每個對象都是它應該做的。基本模型類應該綁定到數據庫。視圖模型綁定到基礎模型類,但具有所有的驗證。有沒有辦法IDE可以提醒我View Model中新增的屬性在基本模型中不存在,反之亦然? – vikramjb
我不確定你的術語,基類表明繼承在這裏不合適。就通知而言,問題在於模型和視圖模型之間存在阻抗不匹配,因爲它們不是建模相同的東西。您的視圖模型可能會增加視圖所需的其他屬性的模型形狀。您也可能不希望或需要將您的所有模型屬性公開給您的視圖,因此任何自動通知其差異都不適合。 – devdigital
「,所以任何自動通知他們的差異將不適合」我不得不不同意這種說法。但我同意你給出的全面答案。謝謝你的澄清,感謝你。 – vikramjb