我正在尝试学习 MVVM 模式,特别是当视图表示数据库表时该怎么做,但视图有几个元素表示单个数据库字段。举个简单的例子:
假设我有一个 DateTime 类型的数据库字段(每个数据库字段都有一个属性的类),但在视图中,我有一个用于日期组件的日期选择器和一个用于时间组件的 TimeSpan。
在 MVC 模式中,我总是有一个 POCO 模型,它包含一个可以为空的 DateTime 属性用于日期选择器和一个可以为空的 TimeSpan 属性用于时间。我会将数据库类映射到模型。
在 MVVM 模式中,我可以包装表示数据库字段的类,并在设置访问器上设置逻辑,使包装的类 DateTime 属性保持同步(并且由于 2 个字段可以为空,视图模型中的私有 DateTime 和 TimeSpan 字段,仅设置如果日期和时间都不为空,则为数据库类 Datetime 属性)
或者,我可以让 viewmodel 包装一个更像 MVC 模型的模型 - 即一个 POCO 模型,其中日期和时间组件表示单独的属性。然后,视图模型变成了一个更简单的包装器,它实现了 INotifyPropertyChanged,以及一个保存 ICommand,它仅在创建或更新数据库类的实例时添加日期和时间跨度。
显然,这两种方法都“有效”,但是什么会被认为是更好的实践和/或最符合 MVVM 架构的方法。谢谢你。