实体映射-------AutoMapper
现在有2个实体(A、B),2个实体中的部分字段是相同的,现在把A实体获取的值赋值给B实体,利用AutoMapper实体映射可以轻松解决
实体中不同名称之间的映射可以这样写
Mapper.Initialize(x =>
x.CreateMap<WorldA, WorldB>()
.ForMember(d => d.AGE, opt => {
opt.MapFrom(s => s.name);
})
);
注意:字段名称相同的类型一定也要相同不然会报错的
//第一步初始化
Mapper.Initialize(cfg =>
{
cfg.CreateMap<WorldA, WorldB>();
});
List<WorldA> worldAs = new List<WorldA>()
{
new WorldA() { id = , wewe = "测试1",name="98k" },
new WorldA() { id = , wewe = "测试2",name="98k" },
new WorldA() { id = , wewe = "测试3",name="98k" },
};
//A实体值赋给B实体
List<WorldB> b = Mapper.Map<List<WorldA>, List<WorldB>>(worldAs).ToList();
public class WorldA
{
public int id { get; set; }
public string wewe { get; set; } public string name { get; set; }
}
public class WorldB
{
public int id { get; set; }
public string wewe { get; set; } public string AGE { get; set; } public string money { get; set; }
}
值为null的处理
Mapper.Initialize(x => x.AddProfile<UserProfile>());
List<WorldA> worldAs = new List<WorldA>()
{
new WorldA() { id = , wewe = "测试1",name=null },
new WorldA() { id = , wewe = "测试2",name="98k" },
new WorldA() { id = , wewe = "测试3",name="98k" },
}; //A实体值赋给B实体
List<WorldB> b = Mapper.Map<List<WorldA>, List<WorldB>>(worldAs).ToList();
public class UserProfile : Profile
{
protected override void Configure()
{
CreateMap<WorldA, WorldB>()
.ForMember(d => d.AGE, opt => opt.MapFrom(s => s.name))
.ForMember(d => d.AGE, opt => opt.NullSubstitute("值为空")
);
CreateMap<WorldA, WorldB>()
.ForMember(d => d.money, opt => opt.MapFrom(s => s.name))
.ForMember(d => d.money, opt => opt.NullSubstitute("值为空")
);
}
}
实体映射-------AutoMapper的更多相关文章
- 简单的C#实体映射 AutoMapper
AutoMapper是对象到对象的映射工具.在完成映射规则之后,AutoMapper可以将源对象转换为目标对象. 要映射实体 public class SourceModel { public int ...
- 释怀我的诺亚尔 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco)
释怀我的诺亚尔 不用EF框架,完成完美实体映射,且便于维护!(AutoMapper,petapoco) 最近,需要搭建一个新项目,在需求分析时确定数据库中需要创建多个存储过程.所以如果还是用原来E ...
- 在 ASP.NET Core 项目中使用 AutoMapper 进行实体映射
一.前言 在实际项目开发过程中,我们使用到的各种 ORM 组件都可以很便捷的将我们获取到的数据绑定到对应的 List<T> 集合中,因为我们最终想要在页面上展示的数据与数据库实体类之间可能 ...
- ASP.NET Core Web 应用程序系列(五)- 在ASP.NET Core中使用AutoMapper进行实体映射
本章主要简单介绍下在ASP.NET Core中如何使用AutoMapper进行实体映射.在正式进入主题之前我们来看下几个概念: 1.数据库持久化对象PO(Persistent Object):顾名思义 ...
- 关于AutoMApping 实体映射
安装AutoMapping包 把订单实体映射成订单DTO实体 .ReverseMap()加上这个方法后 下面自定义 映射规则 第一个就是来源对象 第二个就是目标对象 https://www.cnbl ...
- ASP.NET Core扩展库之实体映射
在分层设计模式中,各层之间的数据通常通过数据传输对象(DTO)来进行数据的传递,而大多数情况下,各层数据的定义结构大同小异,如何在这些定义结构中相互转换,之前我们通过使用AutoMapper库,但Au ...
- .NET Core Dto映射(AutoMapper)
.Net Core Dto映射(AutoMapper) 我们假设一个场景, 采用EF Core+Web Api, 这时候可能会出现EF Core中的Entity Model和在项目中使用的Model之 ...
- 8.2 使用Fluent API进行实体映射【Code-First系列】
现在,我们来学习怎么使用Fluent API来配置实体. 一.配置默认的数据表Schema Student实体 using System; using System.Collections.Gener ...
- 开源实体映射框架EmitMapper介绍
开源实体映射框架EmitMapper介绍 综述 EmitMapper是一个开源实体映射框架,地址:http://emitmapper.codeplex.com/. Emit ...
随机推荐
- SpringBoot nohup启动
#!/bin/sh nohup java -jar /data/wwwroot/xxx.jar > /data/wwwlogs/xxx.log >&
- python中时间戳的探索
声明 本文章只针对python3.6及以上版本. 问题提出 首先,我们先import一些必要模块: In [1]: from datetime import datetime, timezone, t ...
- 吴裕雄 Bootstrap 前端框架开发——Bootstrap 表格:响应式表格
<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title> ...
- #写一个登陆的程序 ( 1.最多登录失败3次 2.登陆成功,提示欢迎XX登录,今天的日期是XXX,程序结束 3.要检验输入是否为空,账户和密码不能为空 4.账户不区分大小写)
import datetime import MySQLdb today=datetime.datetime.today() username=str(input('请输入账户:')) passwd1 ...
- 4.8.2.JSDOM对象控制HTML元素详解
1 <!DOCTYPE html> <html> <head> <meta charset="utf-8" /> <title ...
- 二、Navicat、IDEA、nopad、eclipse、excle工具使用、问题、快捷键
1.Navicat工具: 目的:本地数据库与远程数据库之间数据导入导出 步骤1:文件--新建oracle链接/mysql的连接 步骤2:工具-选项:将本地oracle的bin\oci.dll 的路径复 ...
- Q12问题
1.我知道公司对我的工作要求吗? 2.我有做好我的工作所需要的材料和设备吗? 3.在工作中,我每天都有机会做我最擅长做的事吗? 4.在过去的七天里,我因工作出色而受到表扬吗? 5.我觉得我的主管或同事 ...
- [*CTF2019]babyflash
用JPEXS反编译flash.swf得到441张黑白图片和1个mp3文件 软件下载地址:https://github.com/jindrapetrik/jpexs-decompiler/release ...
- 4.2 Scikit-Learn简介(机器学习篇)
目录 第四章 机器学习 4.1 机器学习简介 4.1.1 机器学习分类 4.2 Scikit-Learn简介 4.2.1 Scikit-Learn的数据表示 4.2.2 Scikit-Learn的评估 ...
- Nginx配置详解 http://www.cnblogs.com/knowledgesea/p/5175711.html
Nginx配置详解 序言 Nginx是lgor Sysoev为俄罗斯访问量第二的rambler.ru站点设计开发的.从2004年发布至今,凭借开源的力量,已经接近成熟与完善. Nginx功能丰富,可作 ...