在DoNetCore MVC 中如何使用AutoMapper
刚开始,按照在donet mvc 的方法写了一遍,发现行不通啊,于是百度了一下,找到这么一篇 https://stackoverflow.com/questions/41284349/automapper-error-saying-mapper-not-initialized
动手开干 ,具体流程
1、Nuget 引入包
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection
2、创建我们的源数据实体,创建我们的目标实体
这是我的项目目录信息,其中红框中就是我们的源实体和目标实体
3、注入服务
在Startup.cs 类中 ConfigureServices 方法中最后一行 添加如下代码:
services.AddAutoMapper();
// This method gets called by the runtime. Use this method to add services to the container.
public void ConfigureServices(IServiceCollection services)
{
services.Configure<CookiePolicyOptions>(options =>
{
// This lambda determines whether user consent for non-essential cookies is needed for a given request.
options.CheckConsentNeeded = context => true;
options.MinimumSameSitePolicy = SameSiteMode.None;
}); //services.AddTransient<IAdminBusinessLoginService, AdminBusinessLoginService>(); var redisconn = Configuration.GetSection("RedisConnectionStrings");
services.AddOptions();
services.Configure<RedisConnectionStrings>(redisconn); var opt = Configuration.GetSection("RedisConnectionStrings"); //Models.AutoMapperHelper.AutoMapperConfig.RegisterAutoMapper(); services.AddSingleton<ICache, ICCSReidsiHelper>(); services.AddAssembly("DSErpService");
services.AddAssembly("IDSErpService");
//注入上下文对象
var sqlConnection = Configuration.GetConnectionString("SchoolConnection");
services.AddDbContext<Db>(op => op.UseSqlServer(sqlConnection)); services.AddAuthentication(CookieAuthenticationDefaults.AuthenticationScheme)
//前台用户cookie服务
.AddCookie(UserAuthorizeAttribute.UserAuthenticationScheme, options =>
{
options.LoginPath = "/Login/Index";
options.LogoutPath = "/Login/LogOff";
options.AccessDeniedPath = new PathString("/Error/Forbidden");//拒绝访问页面
options.Cookie.Path = "/";
}); services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);
services.AddAutoMapper();
}
如图:

4、创建我们的映射对象
这里直接上代码:
public class CategoryProfiles : Profile
{
public CategoryProfiles()
{
CreateMap<BusinessCategory, CategoryDto>().ReverseMap()
.ForMember(a => a.Id, b => b.MapFrom(c => c.Id))
.ForMember(a => a.CategoryName, b => b.MapFrom(c => c.CategoryName))
.ForMember(a => a.StatusMark, b => b.MapFrom(c => c.StatusMark));
}
}
5、实现
[Route("category")]
public class categoryController : Controller
{
/// <summary>
/// 获取用户缓存信息
/// </summary>
private ICache cache;
/// <summary>
/// 分类服务管理
/// </summary>
private ICategoryService categoryService;
private readonly IMapper _mapper;
public categoryController(ICache _cache, ICategoryService _service, IMapper mapper)
{
this.cache = _cache;
this.categoryService = _service;
this._mapper = mapper;
}
[HttpGet("get-pagelist")]
public async Task<JsonResult> GetCategoryPageList(int pageindex, int pagesize)
{
return await Task.Run<JsonResult>(() =>
{
var totalcount = ;
var reslist = this.categoryService.GetCategroryList(null, pageindex, pagesize, out totalcount);
return Json(new
{
code = ,
msg = "",
count = totalcount,
data = this._mapper.Map<List<CategoryDto>>(reslist.data)
});
});
}
}
说明:
this._mapper.Map<List<CategoryDto>>(reslist.data) 我这里是集合映射到集合 ,
this._mapper.Map<T>(T);
this._mapper.Map<List<T>>(listT);
在DoNetCore MVC 中如何使用AutoMapper的更多相关文章
- AutoMapper在MVC中的运用01-配置、使用、单元测试、举例
MVC中,如果想在Domain Model和View Model之间建立映射,用AutoMapper是一个不错的选择.不仅如此,AutoMapper能在不同对象之间建立映射,比如string与int类 ...
- ADO.NET .net core2.0添加json文件并转化成类注入控制器使用 简单了解 iTextSharp实现HTML to PDF ASP.NET MVC 中 Autofac依赖注入DI 控制反转IOC 了解一下 C# AutoMapper 了解一下
ADO.NET 一.ADO.NET概要 ADO.NET是.NET框架中的重要组件,主要用于完成C#应用程序访问数据库 二.ADO.NET的组成 ①System.Data → DataTable, ...
- MVC 中的 ViewModel
此文章总结自:http://rachelappel.com/use-viewmodels-to-manage-data-amp-organize-code-in-asp.net-mvc-applica ...
- MVC中验证码
MVC中验证码的实现(经常用,记录备用) 一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭 ...
- MVC中验证码的实现(经常用,记录备用)
一.目录 1.多层架构+MVC+EF+AUTOFAC+AUTOMAPPER: 2.MVC中验证码的实现(经常用,记录备用) 3.Ligerui首页的快速搭建 二 正文 Ok,我们的验证码开始,这篇文章 ...
- .NetCore MVC中的路由(2)在路由中使用约束
p { margin-bottom: 0.25cm; direction: ltr; color: #000000; line-height: 120%; orphans: 2; widows: 2 ...
- .NetCore MVC中的路由(1)路由配置基础
.NetCore MVC中的路由(1)路由配置基础 0x00 路由在MVC中起到的作用 前段时间一直忙于别的事情,终于搞定了继续学习.NetCore.这次学习的主题是MVC中的路由.路由是所有MVC框 ...
- Asp.Net MVC中使用StreamReader读取“Post body”之应用场景。
场景:有三个市场(Global.China.USA),对前台传过来的数据有些验证需要细化到每个市场去完成. 所以就出现了基类(Global)和派生类(China.USA) 定义基类(Global)Pe ...
- 6.在MVC中使用泛型仓储模式和依赖注入实现增删查改
原文链接:http://www.c-sharpcorner.com/UploadFile/3d39b4/crud-operations-using-the-generic-repository-pat ...
随机推荐
- tp使用ajaxReturn返回二维数组格式的字符串,前台如何获取非乱码
参考: https://www.cnblogs.com/jiqing9006/p/5000849.html https://blog.csdn.net/zengxiangxuan123456/arti ...
- 面试突击(六)——JVM如何实现JAVA代码一次编写到处运行的?
声明:本文图片均来自网络,我只是进行了选择,利用一图胜千言的力量来帮助自己快速的回忆相关的知识点 JVM是 JAVA Virtual Machine 三个英文单词的首字母缩写,翻译成中文就是Java虚 ...
- js---省略花括号{}的几种表达式
在进行js的书写中,对于常见的if,for,while是可以简写,省略花括号{}的: var a = 10,b = 20; /** * if 简写 */ if(a > b) console.lo ...
- J-CUBE Appears at AVATAR Xprize at Geneva 2019
2019年5月27日,瑞士日内瓦,Avatar Xprize发布会隆重举行.非常荣幸的是,J-CUBE也受邀参加此次大会. 关于Avatar Xprize项目的介绍 https://avatar.xp ...
- python获取文件路径
摘自:https://blog.csdn.net/Poo_Chai/article/details/89764001 import os root_path = os.path.abspath(os. ...
- Ubuntu16.04安装Superset
Superset 是Airbnb 开源的大数据可视化平台 其支持的datasource https://superset.incubator.apache.org/index.html?highlig ...
- (转载)基于比较的少样本(one/few-shoting)分类
基于比较的方法 先通过CNN得到目标特征,然后与参考目标的特征进行比较. 不同在于比较的方法不同而已. 基本概念 数据集Omniglot:50种alphabets(文字或者文明); alphabet中 ...
- EasyNVR摄像机网页无插件直播方案H5前端构建之:通道内部搜索功能的实现方案与代码
EasyNVR网页摄像机直播方案 EasyNVR是一款拥有完整.自主.可控知识产权,同时又能够具备软硬一体功能的安防互联网化流媒体服务器,能够通过简单的网络摄像机通道配置,将传统监控行业里面的高清网络 ...
- JAVA中生成指定位数随机数的方法总结
JAVA中生成指定位数随机数的方法很多,下面列举几种比较常用的方法. 方法一.通过Math类 public static String getRandom1(int len) { int rs = ( ...
- DevOps-ISC,CSS,Prometheus,Ansible ,Terraform,zabbix
https://www.terraform.io/ Terraform Use Infrastructure as Code to provision and manage any cloud, in ...