automapper实体中的映射和聚合根中的使用
一,如下例子:
using AutoMapper;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AutoMapper2
{
class Program
{
static void Main(string[] args)
{
//实体属性完全一致映射
Test.InitAutoMapper<ProductDto, Product>();
ProductDto userDto = new ProductDto()
{
Name = "实体映射",
Num = ,
};
//实体间的映射不区分大小写
var o = Mapper.Map<ProductDto, Product>(userDto);
var t = Mapper.Map<Product, ProductDto3>(o); //当属性命名大小写不一致时
Test.InitAutoMapper<ProductDto3, Product>();
ProductDto3 userDto3 = new ProductDto3()
{
Id = ,
Name = "实体映射",
Num = ,
Price =
};
//实体间的映射不区分大小写
var oDomain = Mapper.Map<ProductDto3, Product>(userDto3);
var te = Mapper.Map<Product, ProductDto3>(oDomain); //有DTO模式到聚合根的转换
ProductDto2 userDto2 = new ProductDto2()
{
Name2 = "实体映射",
Num2 = ,
Address = "XXX"
};
var map = Mapper.CreateMap<ProductDto2, Product>()
.ForMember(d => d.Name, opt => opt.MapFrom(x => x.Name2))
.ForMember(d => d.adress.Name, opt => opt.MapFrom(x => x.Address)); var tt = Mapper.Map<ProductDto2, Product>(userDto2); }
}
public class Test
{
public static void InitAutoMapper<DtoModel, DomainModel>()
{
var oType = Mapper.FindTypeMapFor<DtoModel, DomainModel>();
if (oType == null)
{
Mapper.CreateMap<DtoModel, DomainModel>();
Mapper.CreateMap<DomainModel, DtoModel>();
}
}
}
public class Product
{
public int Id { get; set; }
public string Name { get; set; }
public int Num { get; set; }
public int Price { get; set; }
public Adress adress { get; set; } } public class Adress
{
public string Name { get; set; }
}
public class ProductDto
{
public string Name { get; set; }
public int Num { get; set; }
}
public class ProductDto2
{
public string Name2 { get; set; }
public int Num2 { get; set; } public string Address { get; set; }
}
public class ProductDto3
{
public int Id { get; set; }
public string Name { get; set; }
public int Num { get; set; }
public int Price { get; set; }
}
}
automapper实体中的映射和聚合根中的使用的更多相关文章
- DDD的实体、值对象、聚合根的基类和接口:设计与实现
1 前置阅读 在阅读本文章之前,你可以先阅读: 什么是DDD 2 实现值对象 值对象有两个主要特征:它们没有任何标识.它们是不可变的. 我们举个例子:小明是"浙江宁波"人,小红也是 ...
- ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现
在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...
- NET Core Web API下事件驱动型架构CQRS架构中聚合与聚合根的实现
NET Core Web API下事件驱动型架构在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件 ...
- DDD中聚合、聚合根的含义以及作用
聚合与聚合根的含义 聚合: 聚合往往是一些实体为了某项业务而聚类在一起形成的集合 , 举个例子, 社会是由一个个的个体组成的,象征着我们每一个人.随着社会的发展,慢慢出现了社团.机构.部门等组织,我们 ...
- 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则
目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...
- 从壹开始微服务 [ DDD ] 之六 ║聚合 与 聚合根 (下)
前言 哈喽大家周二好,上次咱们说到了实体与值对象的简单知识,相信大家也是稍微有些了解,其实实体咱们平时用的很多了,基本可以和数据库表进行联系,只不过值对象可能不是很熟悉,值对象简单来说就是在DDD领域 ...
- DDD之4聚合和聚合根
聚合就是归类的意思,把同类事物统一处理: 聚合根也就是最抽象,最普遍的特性: 背景 领域建模的过程回顾: 那么问题来了? 为什么要在限界上下文和实体之间增加聚合和聚合根的概念,即作用是什么? 如何设计 ...
- 基于ABP实现DDD--聚合和聚合根实践
在下面的例子中涉及Repository.Issue.Label.User这4个聚合根,接下来以Issue聚合为例进行分析,其中Issue聚合是由Issue[聚合根].Comment[实体].Iss ...
- DDD:使用EntityFramework的话,如果只为聚合根设计仓储,其它实体如何处理?
背景 DDD中只有聚合根可以有仓储,仓储负责整个聚合持久化的相关生命周期,在不使用工作单元或POCO的情况下,我们可以让Order内部直接调用DAL操作OrderItem.我们也可以让Order跟踪所 ...
随机推荐
- Android 虚线实现绘制 - DashPathEffect
前言: 通过view绘制虚实线,采用Android自带API--DashPathEffect.具体使用请参考更多的链接,这里只是讲解. 构造函数 DashPathEffect 的构造函数有两个参数: ...
- python常用函数 D
defaultdict(set_type) 可以定义字典多值映射,入参类型决定value类型. 例子: deque:(int) 保留最后N个元素 例子: Decimal(float) 直接对浮点数进行 ...
- [Linux]Centos7/Centos6更改系统语言
Centos7系统语言配置信息保存在/etc/locale.conf文件内 更改步骤如下: 1.使用vim打开locale.conf文件 vim /etc/locale.conf2.编辑locale. ...
- [转载]解决Android studio新建项目慢的问题
原文地址为:https://blog.csdn.net/easion_zms/article/details/73181402 Android Studio 好处很多,但是当从github上或者导入其 ...
- 第四章 走进jVM
4.1字节码 java文件编译成字节码后由默认解释执行,热点代码编译执行.方法调用到一定程度的时候,进行JIT编译成机器码执行,后面直接运行JIT编译结果(机器码). 4.2类加载过程 加载链接初始化 ...
- Flutter第三方選擇器組件
调用Flutter的第三方时间选择器组件 上面我介绍了系统给我们提供的日期时间选择器,但是有时候系统提供的选择器并不符合我们的要求,这时我们就可以到pub.dev上去寻找符合我们要求的日期选择器. 这 ...
- python 的文件编码处理
python的文件编码处理有点粗鲁 1.不管文件原来是编码类型,读入后都转换成Unicode的编码 2.写入文件时,write函数把变量以读入文件的编码方式写入(根据open(path,mode,en ...
- find命令查找目录
find <path> -type d -name "dir_name" -type d是查找目录的参数,如果是查找其他的: -type b: Block specia ...
- MySQL入门常用命令
使用本地 MySQL,系统 Ubuntu. mysql -u root -p 输入 root 用户的密码进入MySQL: mysql>
- Leetcode_897. Increasing Order Search Tree
题目:https://leetcode.com/problems/increasing-order-search-tree/ 题意: 将一棵二叉搜索树,重排为一棵递增的二叉排序树. 解法1: rson ...