关于存储库模式和MVVM的问题

关于存储库模式和MVVM的问题,mvvm,Mvvm,我有一个名为MemberRepository的存储库,由MemberListViewModel和MemberEditViewModel使用。在存储库中,我有GetMember()、CreateMember、SaveMember、Rollback()和DeleteMember() 在我的整个应用程序中,我有许多填充组合框的查找表。示例状态、交易代码、代理、用户等。我将GetUsers、GetStatuses()和GetTradeCodes()方法放在哪里?在使用它们的适当存储库中 例如,成员视图模

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

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

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


Bill

好的,因此您的
MemberListViewModel
用于列表页面,而
MemberEditViewModel
用于编辑页面

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

  • ListMembersTask
  • EditMemberTask
您将它们与每个人需要的所有存储库一起注入,它们公开了执行每个任务的抽象事物所需的属性和方法。例如,
ListMembersTask
可能有一个名为
CreateMember()
的方法,该方法返回一个用空成员对象初始化的新的
EditMemberTask

然后,您的
ViewModel
将被注入相应的任务(因此
MemberListViewModel
将被注入
ListMembersTask
,等等)。您的
MemberListViewModel
将具有一个
RelayCommand
,该命令调用
CreateMember()
,并获取返回的
EditMemberTask
,将其注入
MemberEditViewModel
并将新的
MemberEditViewModel
传递给演示者

如果您采用这种方法,那么存储库只负责持久性。任务在会话期间封装业务逻辑的状态,而视图模型只是使任务可绑定

我一直在做的下一步是省去特定于任务的视图模型,现在我将一个原始任务交给演示者,它检查对象,并用基本视图模型元素为任务构建视图模型层次结构(如
EditTextViewModel
ChooseOneViewModel
DockingLayoutViewModel
等)