谁是你的模特?

时间:2016-06-06 23:42:50

标签: c# mvvm

假设我有一个访问SQL数据库的应用程序。该数据库有两个表:

  • 动物;和
  • 食谱

我有一个这个数据库的内存模型。有两个类 - AnimalRecipe。它们继承自INotifyPropertyChanged,并具有将1对1映射到数据库中的字段名称的属性。

要创建我的数据访问层,我还有两个类 - SqlAnimalsSqlReceipes。每个类都有LoadSave方法。 Load遍历相关表以创建对象列表。 Save使用对象列表来更新表。例如,SqlRecipes.Load返回IList<Recipe>SqlRecipes.Save接受IList<Recipe>作为参数。

最后,我有一个名为RecipesView的表单。这基于ViewModel - 另一个名为RecipesViewModel的类。 RecipesViewModel继承自INotifyPropertyChanged并包含BindingList<Recipe>属性。

现在我在这里有点困惑。在上面的例子中,我假设内存类和SQL类都被认为是MVVM的Model部分。但是,我是否认为内存模型可以被视为ViewModel部分?

最近我听说ViewModel应该只显示View将显示的数据。由于内存模型具有每个字段,因此它不是ViewModel?

1 个答案:

答案 0 :(得分:1)

在MVVM中,ViewModel引用视图访问的模型。这不包括属于数据层的模型。

视图模型正在检索或设置其值的类(对象表示)被视为模型。只要您了解模型的角色,就可以在实现MVVM时区分它是Model还是ViewModel。此外,ViewModel通常依赖于平台,模型与平台无关。

请参阅The MVVM Pattern