DTO(Data Transfer Object)数据传输对象,只是传输数据,完成与领域对象之间的转换,并不包含领域业务处理。
  当领域模型设计人员只关注核心业务,满足于领域模型的精巧,而不关心具体实现的时候,DTO就会大量出现。

  系统复杂化后,DTO可能是多个Domain Model组合实现。

  为什么要使用DTO?
  1、隔离Domain Model,使改动领域模型而不影响UI,保持领域模型的安全,不暴露业务逻辑。
  2、在分布式模式下,不同的场景使用相同的数据结构有不同的需求。

  简单示例:

  Order.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AppExample
{
public class Order
{
public int OrderID { get; set; } public string OrderNumber { get; set; } public DateTime OrderDate { get; set; }
}
}

  OrderDTO.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AppExample
{
public class OrderDTO
{
public int OrderID { get; set; } public string OrderNumber { get; set; } public DateTime OrderDate { get; set; } public int OrderYear { get; set; }
}
}

  Program.cs

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks; namespace AppExample
{
class Program
{
static void Main(string[] args)
{
Order order = new Order
{
OrderID = ,
OrderNumber = "",
OrderDate = DateTime.Now
}; AutoMapper.Mapper.Initialize(cfg =>
{
cfg.CreateMap<Order, OrderDTO>()
.ForMember(dest => dest.OrderYear, opt => opt.MapFrom(src => src.OrderDate.Year));
}); OrderDTO orderDTO = AutoMapper.Mapper.Map<Order, OrderDTO>(order); Console.WriteLine("{0}-{1}-{2}-{3}", orderDTO.OrderID, orderDTO.OrderNumber, orderDTO.OrderDate, orderDTO.OrderYear);
}
}
}

简单使用AutoMapper实现DTO转换的更多相关文章

  1. AutoMapper完成Dto与Model的转换

    在实际的软件开发项目中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换. 例如,一个Web应用通过前端收集用户的输入成为Dto,然后将Dto转换成领域模型并持久化到数据库中.相反,当用户请求数 ...

  2. 使用AutoMapper实现Dto和Model的自由转换

    AutoMapper是一个.NET的对象映射工具. 项目地址:https://github.com/AutoMapper/AutoMapper. 帮助文档:https://github.com/Aut ...

  3. 使用AutoMapper实现Dto和Model的自由转换(上)

    在实际的软件开发项目中,我们的“业务逻辑”常常需要我们对同样的数据进行各种变换.例如,一个Web应用通过前端收集用户的输入成为Dto,然后将Dto转换成领域模型并持久化到数据库中.另一方面,当用户请求 ...

  4. 使用AutoMapper实现Dto和Model之间自由转换

    应用场景:一个Web应用通过前端收集用户的输入成为Dto,然后将Dto转换成领域模型并持久化到数据库中.另一方面,当用户请求数据时,我们又需要做相反的工作:将从数据库中查询出来的领域模型以相反的方式转 ...

  5. 自制AutoMapper实现DTO到持久层Entity的转换

    自制AutoMapper实现DTO到持久层Entity的转换 项目中经常涉及到页面DTO更新,保存到数据库的操作,这就必然牵扯到DTO和持久层对象的转换,常见的第三方库有: java:dozer .n ...

  6. (转)自制AutoMapper实现DTO到持久层Entity的转换

    原文地址:http://www.cnblogs.com/qidian10/p/3173907.html 项目中经常涉及到页面DTO更新,保存到数据库的操作,这就必然牵扯到DTO和持久层对象的转换,常见 ...

  7. 一个JavaBean和DTO转换的优秀案例

    所有的JavaBean和DTO的互相转换接口,JavaBean转化成DTO或者DTO转换JavaBean: public abstract class Converter<A, B> { ...

  8. 使用AutoMapper实现Dto和Model的自由转换(中)

    在上一篇文章中我们构造出了完整的应用场景,包括我们的Model.Dto以及它们之间的转换规则.下面就可以卷起袖子,开始我们的AutoMapper之旅了. [二]以Convention方式实现零配置的对 ...

  9. 使用AutoMapper实现Dto和Model的自由转换(下)

    书接上文.在上一篇文章中我们讨论了使用AutoMapper实现类型间1-1映射的两种方式——Convention和Configuration,知道了如何进行简单的OO Mapping.在这个系列的最后 ...

随机推荐

  1. Linux命令之route - 显示和操作IP路由表

    转自:  http://codingstandards.iteye.com/blog/1125312 用途说明 route命令用于显示和操作IP路由表(show / manipulate the IP ...

  2. mysql入门安装遇到问题_2016-10-28

    1. brew安装完mysql之后直接输入mysql -u root -p 显示 can't connect to mysql server through socket, 后来问题应该是server ...

  3. SQL分页常用的两个存储过程

    在做数据绑定时,我们常常会遇到分页事件,下面记录一下分页常用到SQL的两个存储过程 ①/****分页数据总数****//****** 对象:  StoredProcedure [dbo].[GetRe ...

  4. Java中的一个类怎么调用另一个类中的方法

    如果另一个类中的那个方法是私有的话,就不能直接调用到,如果是其他类型的话看情况,如果是静态的(static)话,直接用类名可以调用到,如果是非静态的,就需要利用另一个类的实例(也就是用那个类生成的对象 ...

  5. HttpURLConnection使用getInputStream无法执行

    url = new URL(urlStr); urlConn = (HttpURLConnection) url.openConnection(); // 设置请求方式为"GET" ...

  6. js继承理解(有引用)

    具体栗子:http://www.cnblogs.com/ayqy/p/4471638.html(地下为自己理解总结,可能晦涩,链接详细) 1.父类实例赋予子类原型. 2.利用子类函数引用 父类.cal ...

  7. CentOs 7怎么联网

    在安装好Centos7后,网络还不能正常使用,需要我们手动配置.并且Linux的网络配置并不太容易,新手经常不知道从何开始.为了解决这个令大家头疼的问题,我在此将成功的配置过程与大家分享.希望大家都能 ...

  8. MapReduce实例浅析

    在文章<MapReduce原理与设计思想>中,详细剖析了MapReduce的原理,这篇文章则通过实例重点剖析MapReduce 本文地址:http://www.cnblogs.com/ar ...

  9. 【读书笔记】javascript 继承

    在JavaScript中继承不像C#那么直接,C#中子类继承父类之后马上获得了父类的属性和方法,但JavaScript需要分步进行. 让Brid 继承 Animal,并扩展自己fly的方法. func ...

  10. 如何给开源的DUILib支持Accessibility

    最近的工作是给开源的DUILib支持Accessibility, 一些经验记录并分享下. 微软的Accessibility其实Windows平台上一个挺重要的东西, 尽管在国内不受重视,但是如果你的软 ...