大本赢彩票开户

码迷,xscp18.com
大本赢彩票开户 > 移动开发 > 详细

在ASP.NET Core中使用AutoMapper

时间:2019-11-01 00:10:44      阅读:20      评论:0      收藏:0      [点我收藏+]

标签:传输   new   apt   配置文件   map   ice   depend   model   load   

普通的模型映射

现在有两个类,实体类Student和返回展示的 View类StudentView

 

技术图片
 
技术图片
 

两个实体类字段还基本可以,不是很多,假如字段非常非常多,还需要手动去赋值的话,简直太痛苦了。

技术图片
 
技术图片
 

大本赢彩票开户想了想这才是一个方法,一般的系统都会少则几十,多则上百个这样的方法,这还不算,大家肯定遇到过一个情况,如果有一天要在页面多显示一个字段,噗!不是吧,首先要存在数据库,然后在该实体类就应该多一个,然后再在每一个赋值的地方增加一个,而且也没有更好的办法不是,一不小心就少了一个,然后被产品测试说咱们不细心,心塞哟,别慌!神器来了,一招搞定。

先来引入DTO讲解

我们已经知道了ORM(Object Relational Mapping)映射,是一种对象关系的映射,对象-关系映射(ORM)系统一般以中间件的形式存在,主要实现程序对象到关系数据库数据的映射。

而Automapper是一种实体转换关系的模型,AutoMapper是一个.NET的对象映射工具。主要作用是进行领域对象与模型(DTO)之间的转换、数据库查询结果映射至实体对象。

引入AutoMapper的包

技术图片
 

在Services层中引用Nuget包,AutoMapper 和 AutoMapper。Extensions。Microsoft。DependencyInjection

AutoMapper.Extensions.Microsoft.DependencyInjection,这个是用来配合依赖注入的,

在项目当中,都使用依赖注入,尽量不要用new 来实例化,导致层耦合

添加映射文件 AutomapperConfig.cs

在web项目中,新建文件夹,Automapper,添加配置映射配置文件AutomapperConfig.cs,继承自Profile类,用来配置所有的映射关系。

技术图片
 


这里的 Profile有什么用呢,是 services.AddAutoMapper他会自动找到所有继承了Profile的类然后进行配置。我这个类是放在Web层的,如果Profile配置放在其他的层比如Service层,如下图:直接耦合

 

技术图片
 

使用AutoMapper实现模型映射,并注入

那此时Startup类里面的配置就可以写成 services。AddAutoMapper(Assembly。Load("Service"));它会自动加载Service的程序集并从这里面找到继承了profile类的配置实现。

 

如果profile配置放在了web层,那就相当于把配置类和Service层进行了解耦,那么配置中可以写

 

技术图片
 

实现接口的方法中使用mapper

 

技术图片
 

大本赢彩票开户控制器调用接口,并传输数据,最终在index页面上显示:

 

技术图片
 

 

技术图片
 

前端显示:

 

技术图片
 

是不是少了一个Name呢,原因是,我们配置的source和destination两个类的字段不是完全相同的,但是有时候这两个字段实际上是相同的。

我们可以,加上配置:

 

技术图片
 

如果不想映射某个字段:我们还可以:

 

技术图片
 

这样子,我们完成了映射类的配置:忽略age的映射,并将原始类的name给到StudentView的StudentName,这样子,前端显示肯定是18消失了,转而出现了张国荣字样,我们来看看是不是呢?

 

技术图片
 

哦?张国荣字样确实出来了,可为什么会多出个0呢?

大本赢彩票开户原因是,在C#的数据类型当中,int类型属于值类型,是不能为空的,默认给了0,我们尝试将model实体类的age改为可空类型试试。

 

技术图片
 

前端测试如下:

 

技术图片
 

果然age消失了。好了今天的学习就到这里结束了,欢迎关注微信公众号:dotNET学习天地

一起学习和进步,与君共勉之。

在ASP.NET Core中使用AutoMapper

标签:传输   new   apt   配置文件   map   ice   depend   model   load   

原文地址:https://www.cnblogs.com/xingxingzhou/p/11774282.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
           
© 2014 xscp18.com 版权所有 京ICP备13008772号-2
迷上了代码!
乐胜彩票开户 9彩彩票开户 新优彩票开户 趣乐彩票开户 财神彩票开户 博盈彩票开户 盛兴彩票开户 搜狐彩票开户 欢乐彩票开户 旺旺彩票开户