class="p0">AutoMapper是一个.NET的对象映射工具,一般地,我们进行面向服务的开发时,都会涉及到DTO的概念,即数据传输对象,而为了减少系统的负载,一般我们不会把整个表的字段作为传输的数据,而是单独根据具体场景,写一个新的类,这个类一般以DTO结尾,意思是说,它是网络上的数据传输用的,而你的DTO数据对象的赋值过程就成了一个问题,而为了减少赋值过程的代码量,AutoMapper就出来了,它可以实现实体对实体的赋值过程,或者叫“映射过程”。
我心中的项目应该是这样的,用户业务服务,产品业务服务,订单业务服务,这样服务都使 用单独的数据库,它们之间的通讯采用WCF进行实现,在获数据时会在WEB端添加缓存机制,以减少对WCF的调用,而在WCF的网络通讯中,数据类型一般 不会使用poco实体,因为它会有很多对当前业务无用的字段,我们会为具体业务建立具体的DTO对象,而entity实体与DTO实体之间的赋值过程我们 可以用AutoMapper来实现。
AutoMapper在程序中的体现:
DTO实体
[DataContract]
public class ProductDTO {
[DataMember]
public int ProductID { get; set; }
[DataMember]
public string ProductName { get; set; }
[DataMember]
public System.DateTime CreateDate { get; set; }
[DataMember]
public int SaleCount { get; set; }
[DataMember]
public Nullable<int> ClickCount { get; set; }
[DataMember]
public string Info { get; set; }
[DataMember]
public int UserID { get; set; }
[DataMember]
public decimal SalePrice { get; set; }
[DataMember]
public int Discount { get; set; }
}
POCO实体:
public partial class Product {
public Product() {
this.ProductDetail = new HashSet<ProductDetail>();
}
public int ProductID { get; set;
}
public string ProductName { get; set;
}
public System.DateTime CreateDate { get; set;
}
public int SaleCount { get; set; }
public Nullable int ClickCount {
get ; set ; }
public string Info {get ; set ; }
public int UserID { get ; set ; }
public decimal SalePrice { get ; set ; }
public int Discount {get ; set ; }