加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – automapper,你在哪里放置代码将View Model映射到

发布时间:2020-12-15 20:38:36 所属栏目:asp.Net 来源:网络整理
导读:我的mvc3项目有以下图层. 控制器 – 服务 – 库. 我需要将ViewModel映射到Entity,不确定哪个层是放入代码的正确层. 我知道它的控制器或服务,请让我知道我应该使用哪一个,如果可以,请告诉我原因. 谢谢. 解决方法 I need to map ViewModel to Entity,not sure
我的mvc3项目有以下图层.

控制器 – >服务 – >库.

我需要将ViewModel映射到Entity,不确定哪个层是放入代码的正确层.

我知道它的控制器或服务,请让我知道我应该使用哪一个,如果可以,请告诉我原因.

谢谢.

解决方法

I need to map ViewModel to Entity,not sure which layer is the right one to put the code in.

控制器当然.服务和存储库层不知道视图模型的含义.他们只操纵领域模型.

所以在控制器内你使用.Map< TSource,TDest>调用在域模型和视图模型之间来回进行映射.但映射定义本身(.CreateMap< TSource,TDest> call)每AppDomain生命周期完成一次,理想情况下在Profile中.

因此,让我们在RESTful术语中考虑控制器操作中的几个典型工作流

GET(以RDBMS术语表示):

> controller查询服务层以检索域模型(在大多数情况下是聚合根)
> controller调用映射层将域模型映射到视图模型
> controller将视图模型传递给视图

PUT(以RDBMS术语插入):

> controller从视图中接收视图模型作为action参数
> controller将视图模型映射到域模型
> controller将域模型传递给服务层进行处理
> controller重定向到GET操作

DELETE(以RDBMS术语删除)

> controller接收id作为动作参数
> controller将id传递给服务层进行处理(删除)
> controller重定向到GET操作

POST(以RDBMS术语更新):

> controller从视图中接收视图模型作为action参数
> controller查询服务层以获取我们想要使用视图模型中包含的唯一ID更新的域模型
> controller仅更新检索到的域模型的属性,这些属性也存在于视图模型中.例如,域模型可能包含Username和IsAdmin属性,视图模型显然只包含Username属性.因此,我们保持域模型上的IsAdmin属性不变,并更新Username属性.在AutoMapper术语中,这转换为.Map< TSource,TDest>的以下void重载.方法:Mapper.Map< ADomain,ViewModel>(domainInstanceControllerRetrievedUsingTheId,viewModelInstancePassedAsArgument);
> controller将更新的域模型传递给服务层进行处理(更新)
> controller重定向到GET操作

有了这4个工作流程,您就可以为CRUD世界做好准备了.

附: REST提醒:

Create = PUT
Retrieve = GET
Update = POST
Delete = DELETE

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读