这篇文章将为大家详细讲解有关ASP.NETCore如何使用AutoMapper实现实体映射,小编觉得挺实用的,因此分享给大家做个参考,希望大家阅读完这篇文章后可以有所收获。在实际的项目开发过程中,我们使用各种ORM框架可以使我们快捷的获取到数据,并且可以将获取到的数据绑定到对应的List中,然后页面或者接口直接显示List中的数据。但是我们最终想要显示在视图或者接口中的数据和数据库实体之间可能存在着差异,一般的做法就是去创建一些对应的“模型”类,然后对获取到的数据再次进行处理,从而满足需求。因此,如果便捷的实现数据库持久化对象与模型对象之间的实体映射,避免在去代码中手工实现这一过程,就可以大大降低开发的工作量。AutoMapper就是可以帮助我们实现实体转换过程的工具。AutoMapper是一个OOM(Object-Object-Mapping)组件,从它的英文名字中可以看出,AutoMapper主要是为了实现实体间的相互转换,从而避免我们每次采用手工的方式进行转换。在没有OOM这类组件之前,如果我们需要实现实体之间的转换,只能使用手工修改代码,然后逐个赋值的方式实现映射,而有了OOM组件,可以很方便的帮助我们实现这一需求。看下面的一个例子。首先创建一个ASP.NET Core WebApi项目:添加一个Student实体类:添加StudentDTO类,跟Student属性一致。然后添加一个类,模拟一些测试数据:添加Student控制器,通过Get方法获取所有的值:使用Postman进行测试:这样返回的数据直接就是数据库对应的实体类类型。这时需求改变了,我们要返回StudentDTO类型的数据,这时就需要修改代码:还是使用Postman进行测试:可以看到:这时返回的是DTO类型的数据。这种情况就是我们上面说的,需要手动修改代码,然后循环给对应的属性进行赋值。这里Student类只有4个属性,如果属性非常多,或者很多地方使用到了,如果还是采用这种方式进行赋值,那么就会很麻烦。假如以后其中的一个属性名称改变了,那么所有的地方也都需要修改,工作量就会很大。这时就需要使用AutoMapper解决。首先引入AutoMapper包,直接在NuGet中引入:这里选择安装AutoMapper.Extensions.Microsoft.DependencyInjection这个包。这个包主要是为了让我们可以通过依赖注入的方式去使用AutoMapper。新建StudentProfile类,继承自AutoMapper的Profile类,在无参构造函数中,我们就可以通过 CreateMap 方法去创建两个实体间的映射关系。这里的Profile有什么用呢?services.AddAutoMapper他会自动找到所有继承了Profile的类然后进行配置。然后修改Student控制器,通过构造函数使用AutoMapper的注入,并使用AutoMapper实现自动映射:修改Startup类的ConfigureServices方法,添加AutoMapper:再次使用Postman进行测试:可以看到,这样也实现了我们的需求,而且还不需要进行手动映射。上面的示例中,Student和StudentDTO类里面的属性名称都是一样的,如果属性名称不一样呢?我们把StudentDTO类里面的ID改为StudentID,然后修改映射代码:再次使用Postman进行测试:这样就实现了自定义映射。这里是映射了一个字段,如果是多个字段不同呢?修改StudentDTO类:然后修改映射配置类:在使用Postman进行测试:这样就实现了多个属性的自定义映射。上面的实例中是从Student映射到StudentDTO,那么可以从StudentDTO映射到Student吗?答案是肯定的,只需要在映射的最后使用ReverseMap()方法即可:我们修改Data,里面增加一个Add方法,可以将Student添加到集合中:修改Student控制器,添加一个Post方法,传入的参数的StudentDTO类型:使用Postman进行测试:返回结果:这样就实现了映射的反转。关于“ASP.NE免费云主机域名TCore如何使用AutoMapper实现实体映射”这篇文章就分享到这里了,希望以上内容可以对大家有一定的帮助,使各位可以学到更多知识,如果觉得文章不错,请把它分享出去让更多的人看到。
相关推荐: 将自然语言查询转换为SQL代码的AI工具怎么使用
今天小编给大家分享一下将自然语言查询转换为SQL代码的AI工具怎么使免费云主机域名用的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。人工智能可以帮…
免责声明:本站发布的图片视频文字,以转载和分享为主,文章观点不代表本站立场,本站不承担相关法律责任;如果涉及侵权请联系邮箱:360163164@qq.com举报,并提供相关证据,经查实将立刻删除涉嫌侵权内容。