我正在学习MVVM
。我知道模型在概念上与我的数据有关。这是我的情景。
database table definition
create table people (SSN varchar(9),first_name varchar(40),last_name varchar(40))
在我看来PeopleV.xaml
我定义了一个DataGrid
,其中包含3列:SSN
,FirstName
,LastName
。
在我的模型类PeopleM
中,我公开了3个属性:SSN
,FirstName
,LastName
。
在我的viewmodel类PeopleVM
中我定义了:
PersonInfo = new ObservableCollection<PeopleM>();
现在我需要执行select * from people where SSN >= 'xxxxxxxxx'
并将数据放入DataTable
。
我的问题是我应该在模型DataTable
类或viewmodel PeopleM
类中执行此操作(定义{{1}}并填充数据)?
感谢。
答案 0 :(得分:11)
模型应该是仅用于保存数据的哑数据对象,因此我不会向该层添加任何类型的数据访问。
ViewModels用于为视图建模,通常包括为要使用的View加载正确的数据模型,但是它们不一定必须包含数据访问代码本身。
在大多数情况下,如果我将数据访问完全放在另一层,并让ViewModel通过与数据访问层交互来获取数据,我觉得最简单。
例如,我的ViewModel可能有SearchCommand
,点击后会执行以下操作:
void Search(string ssn)
{
PeopleCollection = PeopleRepository.GetPeopleBySsn(ssn);
}
拥有一个单独的数据访问层,可以更轻松地重用数据访问组件,并使应用程序更易于维护,更新和测试。