mvvm在模型或视图模型中检索数据?

Sha*_*awn 5 wpf mvvm c#-4.0

我正在学习MVVM.我知道模型在概念上与我的数据有关.这是我的情景.

database table definition
create table people (SSN varchar(9),first_name varchar(40),last_name varchar(40))
Run Code Online (Sandbox Code Playgroud)

在我看来,PeopleV.xaml我定义了一个DataGrid3列:SSN,FirstName,LastName.

在我的模型类PeopleM我露出3个属性:SSN,FirstName,LastName.

在我的viewmodel类中PeopleVM我定义了:

PersonInfo = new ObservableCollection<PeopleM>();
Run Code Online (Sandbox Code Playgroud)

现在我需要执行select * from people where SSN >= 'xxxxxxxxx'并将数据放入DataTable.

我的问题是我应该DataTable在模型PeopleM类或viewmodel PeopleVM类中执行此操作(定义并填充数据)?

谢谢.

Rac*_*hel 13

模型应该是仅存在以保存数据的哑数据对象,因此我不会向该层添加任何类型的数据访问.

ViewModels用于为视图建模,通常包括为要使用的View加载正确的数据模型,但是它们不一定必须包含数据访问代码本身.

在大多数情况下,如果我将数据访问完全放在另一层,并让ViewModel通过与数据访问层交互来获取数据,我觉得最简单.

例如,我的ViewModel SearchCommand在点击时可能会执行以下操作:

void Search(string ssn)
{
    PeopleCollection = PeopleRepository.GetPeopleBySsn(ssn);
}
Run Code Online (Sandbox Code Playgroud)

拥有一个单独的数据访问层可以更轻松地重用数据访问组件,并使应用程序更易于维护,更新和测试.