WebEnh

.net7 mvc jquery bootstrap json 学习中 第一次学PHP,正在研究中。自学进行时... ... 我的博客 https://enhweb.github.io/ 不错的皮肤:darkgreentrip,iMetro_HD
  首页  :: 新随笔  :: 联系 :: 订阅 订阅  :: 管理

.net core中使用Automapper

Posted on 2020-06-16 20:29  WebEnh  阅读(249)  评论(0编辑  收藏  举报

安装所需的包
Install-Package AutoMapper.Extensions.Microsoft.DependencyInjection

配置AutoMapper
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_2);
services.AddAutoMapper(AppDomain.CurrentDomain.GetAssemblies());
}
1
2
3
4
5
添加测试模型
public class QueueInfo
{
public string Id { get; set; }

public string QueueNumber { get; set; }

public DateTime CreateTime { get; set; }

}
1
2
3
4
5
6
7
8
9
public class QueueInfoCreateDto
{
public string Id { get; set; }

public string QueueNumber { get; set; }

public DateTime CreateTime { get; set; }
}
1
2
3
4
5
6
7
8
创建用户自定义Profile进行映射配置
public class QueueProfile:Profile
{
public QueueProfile()
{
CreateMap<QueueInfo, QueueInfoCreateDto>().ReverseMap();
}
}
1
2
3
4
5
6
7
ReverseMap表示双向映射。具体还有很多相关的api,详情可以进行官网查看。

进行测试
public class ValuesController : ControllerBase
{
//注册IMapper
private readonly IMapper _mapper;
public ValuesController(IMapper mapper)
{
_mapper = mapper;
}
// GET api/values
[HttpGet]
public ActionResult<IEnumerable<string>> Get()
{
QueueInfo info = new QueueInfo
{
Id = Guid.NewGuid().ToString(),
CreateTime = DateTime.Now,
QueueNumber = "123456789"
};
var dto = _mapper.Map<QueueInfoCreateDto>(info);
return Ok(dto);
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
集合之间也可以进行映射。其他拓展请查看官网进行学习。

Automapper还可以在命名上进行自动转换。

例如
public class QueueInfo
{
public string Id { get; set; }

public string QueueNumber { get; set; }

public DateTime CreateTime { get; set; }

public QueueItem QueueItem { get; set; }
}

public class QueueItem
{
public string Id { get; set; }

public string Name { get; set; }
}

public class QueueInfoCreateDto
{
public string Id { get; set; }

public string QueueNumber { get; set; }

public DateTime CreateTime { get; set; }

/// <summary>
/// 这里使用的是QueueInfo中的QueueItem对象下的Name。进行映射的时候会自动映射
/// </summary>
public string QueueItemName { get; set; }
}
————————————————
版权声明:本文为CSDN博主「Jonny Lin」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/xhl_james/article/details/90511969