• DDD-Mapper




    应用层:Application
    领域层:Domain Model Layer


    为什么要用Mapper,随着技术的变化应用层的DTO会发生变化。大的业务契约不能够保证代码上线一次就成功。需要更换契约,SOA1->SOA2。契约中的长名称变成了短名称。由UserInvoiceItem 变成了  InvoiceTitle  如下



    SOA 1.0版本
        [Serializable]
        public class UserInvoiceItem
        {
            public UserInvoiceItem();
    
            // Summary:
            //     发票ID
            public long InfoID { get; set; }
            //
            // Summary:
            //     发票标题
            public string Title { get; set; }
            //
            // Summary:
            //     Uid
            public string Uid { get; set; }
        }
    }


    SOA 2.0 版本
    // Summary:
        //     常用发票抬头信息
        [Serializable]
        [DebuggerStepThrough]
        [DesignerCategory("code")]
        [GeneratedCode("System.Xml", "4.0.30319.1009")]
        [ProtoContract]
        [XmlRoot(Namespace = "/platform/sps/InvoiceService/v1", IsNullable = false)]
        [XmlType(Namespace = "/platform/sps/InvoiceService/v1")]
        public class InvoiceTitle
        {
            public InvoiceTitle();
    
            // Summary:
            //     常用发票抬头ID
            [ProtoMember(2)]
            public long inId { get; set; }
            //
            // Summary:
            //     常用发票抬头
            [ProtoMember(3)]
            public string tle { get; set; }
            //
            // Summary:
            //     用户ID
            [ProtoMember(1)]
            public string uid { get; set; }
        }



    UserInvoice.Items.Add(Mapper.Map<UserInvoice,UserInvoiceItem>(InvoiceItem));
    UserInvoice.Items.Add(Mapper.Map<UserInvoice,InvoiceTitle>(InvoiceItem));

  • 相关阅读:
    MySQL事务学习-->隔离级别
    ssh升级
    通过普通用户向各个节点服务器分发文件到各个目录
    parted在2T以上硬盘上分区操作
    时间同步出现ntpdate[1788]: the NTP socket is in use, exiting
    kvm解决1000M网卡问题
    mysql主从同步问题解决汇总
    ....
    iOS App Icon图标 尺寸规范
    SpringMVC注解配置
  • 原文地址:https://www.cnblogs.com/kfsmqoo/p/4505562.html
Copyright © 2020-2023  润新知