6

我正在学习MVVM。我知道模型在概念上是关于我的数据的。这是我的场景。

database table definition
create table people (SSN varchar(9),first_name varchar(40),last_name varchar(40))

在我看来,我用 3 列PeopleV.xaml定义了 a : , , .DataGridSSNFirstNameLastName

在我的模型类中PeopleM,我公开了 3 个属性:SSN, FirstName, LastName.

在我的视图模型类中PeopleVM,我定义了:

PersonInfo = new ObservableCollection<PeopleM>();

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

我的问题是我应该在模型类还是视图模型类中执行此操作(定义DataTable并用数据填充)?PeopleMPeopleVM

谢谢。

4

1 回答 1

15

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

ViewModel 旨在为视图建模,通常包括加载正确的数据模型以供视图使用,但它们不一定必须包含数据访问代码本身。

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

例如,我的 ViewModel 可能有一个SearchCommand,当单击它时会执行以下操作:

void Search(string ssn)
{
    PeopleCollection = PeopleRepository.GetPeopleBySsn(ssn);
}

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

于 2013-05-14T18:33:22.557 回答