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

时间:2013-05-14 18:27:40

标签: wpf c#-4.0 mvvm

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

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

在我看来PeopleV.xaml我定义了一个DataGrid,其中包含3列:SSNFirstNameLastName

在我的模型类PeopleM中,我公开了3个属性:SSNFirstNameLastName

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

PersonInfo = new ObservableCollection<PeopleM>();

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

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

感谢。

1 个答案:

答案 0 :(得分:11)

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

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

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

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

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

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