ASP.NET MVC - 我是否应该使用存储库模式将ViewModel写入数据库或首先将它们转换为模型?

Dam*_*isa 9 c# asp.net-mvc design-patterns repository-pattern viewmodel

在我的ASP.NET MVC应用程序中,我有一个相当复杂的编辑页面,它将许多模型组合到一个视图中.

我正在使用ViewModel模式来组合所有这些信息,并向View提供一个有凝聚力的对象.

举个例子,我的ViewModel结构是这样的:

CompanyId
CompanyName
List<Employee> Employees
List<ContactMethod> ContactMethods
Run Code Online (Sandbox Code Playgroud)

Employee对象具有许多基本属性和首选联系方法.

在编辑页面上,用户将获得公司的所有员工,他们可以添加和删除(使用javascript),以及编辑员工详细信息.ContactMethods列表用于填充每个员工的下拉列表.

我已成功将我的模型(从数据库中读取)转换为此ViewModel并再次返回,因此在编辑之后,我留下了一个ViewModel,表示该公司员工的当前状态.

我正在使用Repository模式与数据库进行通信,所以我的问题是,我应该直接调用CompanyRepository,传递ViewModel,还是应该先将ViewModel转换回Model对象,然后再使用Repository将它们写入数据库?

简而言之,Repository应该知道我的ViewModel对象吗?

man*_*u08 13

我首先将ViewModel转换回Model对象.我喜欢尽可能地保持Web层和Repository层之间的依赖关系.

我不认为您的存储库应该知道您的ViewModel,因为这是一个Web级别的概念.