在我的一个视图中,我有一个ViewModel
,我从两个表中填充,然后将List<ViewModel>
绑定到可编辑的GridView(ASP.NET Web窗体)。
现在我需要将已编辑的List<ViewModel>
发送回服务层,以便在数据库中更新它。
我的问题是 - 是否可以将ViewModel发送回服务,还是应该保留在演示文稿中?如果不是 - 我应该更好地使用DTO吗?非常感谢。
答案 0 :(得分:10)
好问题!
经过与我的队友的几次(硬)辩论以及我对MVC应用程序的经验,我不建议将viewmodel传递给您的服务/域层。
否则,您的服务层最终将无法使用,因为您的viewModel会限制一个视图的特定内容。
像https://github.com/AutoMapper/AutoMapper这样的好工具是为了完成制图工作。
答案 1 :(得分:7)
我会不这样做。我的规则是:提供服务方法,包括完成工作所需的一切, 。
为什么?
因为它减少了耦合。通常,服务方法来自多个来源(消费者)。消费者更容易实现简单的方法签名,而不是必须构建一个相对复杂的对象,如视图模型,否则它可能与之无关。它甚至可能需要引用它本来不需要的组件。
大大减少了维护工作量。我认为普通开发人员花费超过50%的时间来检查和跟踪现有代码(甚至可能更多)。现在每个人都知道寻找 not 的东西需要不成比例的时间:你必须已经无处不在才能确定。如果一个方法接收到的参数(或具有属性的对象)没有直接使用或者在调用堆栈的下方,你或其他人将会一次又一次地走这条路。
因此,如果视图模型中没有任何内容在服务方法中起作用,请不要使用它来调用方法。
答案 2 :(得分:-3)
是。我很确定没问题。
尝试使用MS Entity Framework,它会帮助你分配。