关于Repository模式和MVVM的问题

时间:2010-11-24 17:39:58

标签: mvvm

我有一个名为MemberRepository的存储库,它由MemberListViewModel和MemberEditViewModel使用。在存储库中,我有GetMember(),CreateMember,SaveMember,Rollback()和DeleteMember()。

在我的应用程序中,我有许多填充组合框的查找表。示例状态,商业代码,代理,用户等。我在哪里放置GetUsers,GetStatuses(),GetTradeCodes()方法?在使用它们的适当存储库中?

例如,成员视图模型需要一个状态列表,交易代码,类等。所以我会将这些内容放在MemberRepository中吗?

比尔

1 个答案:

答案 0 :(得分:0)

好的,所以MemberListViewModel用于列表页面,MemberEditViewModel是一个编辑页面。

在我的模型中,我要做的是公开以下类:

  • ListMembersTask
  • EditMemberTask

您可以使用每个需要的所有存储库注入这些存储库,并且它们会公开执行每个任务的一些抽象事物所需的属性和方法。例如,ListMembersTask可能有一个名为CreateMember()的方法,它返回一个用空的Member对象初始化的新EditMemberTask

然后您的ViewModel会注入相应的任务(因此MemberListViewModel注入了ListMembersTask等)。您的MemberListViewModelRelayCommand调用CreateMember()并获取返回的EditMemberTask,将其注入MemberEditViewModel并将新MemberEditViewModel传递给EditTextViewModel主持人。

如果您遵循该方法,则存储库仅负责持久性。任务在会话期间包装业务逻辑的状态,而视图模型只是使任务可绑定。

我一直在努力的下一步是放弃特定于任务的视图模型,现在我将一个原始任务交给Presenter,它检查对象并构建一个视图模型层次结构用于基本视图模型元素的任务(如ChooseOneViewModelDockingLayoutViewModel,{{1}}等。)