一,如下例子:

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实体中的映射和聚合根中的使用的更多相关文章

  1. DDD的实体、值对象、聚合根的基类和接口:设计与实现

    1 前置阅读 在阅读本文章之前,你可以先阅读: 什么是DDD 2 实现值对象 值对象有两个主要特征:它们没有任何标识.它们是不可变的. 我们举个例子:小明是"浙江宁波"人,小红也是 ...

  2. ASP.NET Core Web API下事件驱动型架构的实现(四):CQRS架构中聚合与聚合根的实现

    在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件总线的实现.接下来对于事件驱动型架构的讨论,就需 ...

  3. NET Core Web API下事件驱动型架构CQRS架构中聚合与聚合根的实现

    NET Core Web API下事件驱动型架构在前面两篇文章中,我详细介绍了基本事件系统的实现,包括事件派发和订阅.通过事件处理器执行上下文来解决对象生命周期问题,以及一个基于RabbitMQ的事件 ...

  4. DDD中聚合、聚合根的含义以及作用

    聚合与聚合根的含义 聚合: 聚合往往是一些实体为了某项业务而聚类在一起形成的集合 , 举个例子, 社会是由一个个的个体组成的,象征着我们每一个人.随着社会的发展,慢慢出现了社团.机构.部门等组织,我们 ...

  5. 基于ABP落地领域驱动设计-02.聚合和聚合根的最佳实践和原则

    目录 前言 聚合 聚合和聚合根原则 包含业务原则 单个单元原则 事务边界原则 可序列化原则 聚合和聚合根最佳实践 只通过ID引用其他聚合 用于 EF Core 和 关系型数据库 保持聚合根足够小 聚合 ...

  6. 从壹开始微服务 [ DDD ] 之六 ║聚合 与 聚合根 (下)

    前言 哈喽大家周二好,上次咱们说到了实体与值对象的简单知识,相信大家也是稍微有些了解,其实实体咱们平时用的很多了,基本可以和数据库表进行联系,只不过值对象可能不是很熟悉,值对象简单来说就是在DDD领域 ...

  7. DDD之4聚合和聚合根

    聚合就是归类的意思,把同类事物统一处理: 聚合根也就是最抽象,最普遍的特性: 背景 领域建模的过程回顾: 那么问题来了? 为什么要在限界上下文和实体之间增加聚合和聚合根的概念,即作用是什么? 如何设计 ...

  8. 基于ABP实现DDD--聚合和聚合根实践

      在下面的例子中涉及Repository.Issue.Label.User这4个聚合根,接下来以Issue聚合为例进行分析,其中Issue聚合是由Issue[聚合根].Comment[实体].Iss ...

  9. DDD:使用EntityFramework的话,如果只为聚合根设计仓储,其它实体如何处理?

    背景 DDD中只有聚合根可以有仓储,仓储负责整个聚合持久化的相关生命周期,在不使用工作单元或POCO的情况下,我们可以让Order内部直接调用DAL操作OrderItem.我们也可以让Order跟踪所 ...

随机推荐

  1. Django 使用简单笔记

    1. Django项目的启动: 1. 命令行启动 在项目的根目录下(也就是有manage.py的那个目录),运行: python3 manage.py runserver IP:端口--> 在指 ...

  2. [Linux]Centos7/Centos6更改系统语言

    Centos7系统语言配置信息保存在/etc/locale.conf文件内 更改步骤如下: 1.使用vim打开locale.conf文件 vim /etc/locale.conf2.编辑locale. ...

  3. Codeforces 735E 树形DP

    题意:给你一棵树,你需要在这棵树上选择一些点染成黑色,要求染色之后树中任意节点到离它最近的黑色节点的距离不超过m,问满足这种条件的染色方案有多少种? 思路:设dp[x][i]为以x为根的子树中,离x点 ...

  4. kotlin中实现匿名内部类

    1.常规的方式实现匿名内部类 valueAnimator.addUpdateListener(object :AnimatorUpdateListener { override fun onAnima ...

  5. HTML基础 用div布局实现一个简单网页

    div布局如下 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <t ...

  6. spring 整合rabbitMQ

    <!-- 配置邮件消息队列监听 --> <bean id="maillistener" class="cn.xdf.wlyy.listener.Mail ...

  7. 【串线篇】Mybatis缓存之缓存查询顺序

    1. 不会出现一级缓存和二级缓存中有同一个数据.因为二级缓存是在一级缓存关闭之后才有的 2.任何时候都是先看二级缓存.再看一级缓存,如果大家都没有就去查询数据库,数据库的查询后的结果放在一级缓存中了: ...

  8. git操作命令行

    前言 git操作各种软件五花八门,懒得研究,用最原始的方法敲命令行. 操作 1.网上下载git 网上百度一下好多直接下载就好 2.配置用户名邮箱 $ git config --global user. ...

  9. 【C++11新特性】 C++11智能指针之shared_ptr

    C++中的智能指针首先出现在“准”标准库boost中.随着使用的人越来越多,为了让开发人员更方便.更安全的使用动态内存,C++11也引入了智能指针来管理动态对象.在新标准中,主要提供了shared_p ...

  10. rabbitmqctl常用命令-3

    1)启动.关闭 rabbitmq节点和应用 rabbitmq-server -detached #rabbitmq分别启动节点和应用 应用关闭rabbitmqctl stop_app 应用启动 rab ...