AutoMapper运用实例
来源:互联网 发布:交易猫软件下载 编辑:程序博客网 时间:2024/05/19 14:17
AutoMapper是可以实现Deep copy的。默认是相同的属性名复制过去。
如果有不一样的属性名需要拷贝,可以通过定义自己的规则就行Mapping。
使用实例(转载):
public class Employee{ public string Name { get; set; } public string Email { get; set; } public Address Address { get; set; } public string Position { get; set; } public bool Gender { get; set; } public int Age { get; set; } public int YearsInCompany { get; set; } public DateTime StartDate { get; set; }}public class Address{ public string Country { get; set; } public string City { get; set; } public string Street { get; set; } public int Number { get; set; } }public class EmployeeViewItem{ public string Name { get; set; } public string Email { get; set; } public string Address { get; set; } public string Position { get; set; } public string Gender { get; set; } public int Age { get; set; } public int YearsInCompany { get; set; } public string StartDate { get; set; }}
普通做法:
EmployeeViewItem viewItem = new EmployeeViewItem();viewItem.Name = employee.Name;viewItem.Email = employee.Email;viewItem.Address = employee.Address.City + employee.Address.Street + employee.Address.Number;viewItem.Position = employee.Position;viewItem.Gender = employee.Gender == true ? "Man" : "Female";viewItem.Age = employee.Age;viewItem.YearsInCompany = employee.YearsInCompany;viewItem.StartDate = employee.StartDate.ToShortDateString();
用AutoMapper之后:
Mapper.CreateMap<Employee, EmployeeViewItem>();EmployeeViewItem employeeViewItem = Mapper.Map<Employee, Employee>(employee);
以上只需两句话非常简洁,但是需要配置Mapping的方法
class Program{ static void Main(string[] args) { Mapper.CreateMap<Employee, EmployeeViewItem>() .ForMember(ev => ev.Address, m => m.MapFrom(a => a.Address.City + ", " + a.Address.Street + " " + a.Address.Number) ) .ForMember(ev => ev.Gender, m => m.ResolveUsing<GenderResolver>().FromMember(e => e.Gender)) .ForMember(ev => ev.StartDate, m => m.AddFormatter<DateFormatter>()); Employee employee = new Employee { Name = "John SMith", Email = "john@codearsenal.net", Address = new Address { Country = "USA", City = "New York", Street = "Wall Street", Number = 7 }, Position = "Manager", Gender = true, Age = 35, YearsInCompany = 5, StartDate = new DateTime(2007, 11, 2) }; EmployeeViewItem employeeVIewItem = Mapper.Map<Employee, EmployeeViewItem>(employee); } public class GenderResolver : ValueResolver<bool, string> { protected override string ResolveCore(bool source) { return source ? "Man" : "Female"; } } public class DateFormatter : IValueFormatter { public string FormatValue(ResolutionContext context) { return ((DateTime)context.SourceValue).ToShortDateString(); } }}
EmployViewItem的结果如下:
还有些更加深入和详细的用法可以参照下面的链接
http://www.cnblogs.com/youring2/p/automapper.html
0 0
- AutoMapper运用实例
- AutoMapper在MVC中的运用01
- AutoMapper在MVC中的运用02
- AutoMapper在MVC中的运用03
- AutoMapper在MVC中的运用04
- AutoMapper在MVC中的运用05
- AutoMapper在MVC中的运用06
- AutoMapper在MVC中的运用07
- AutoMapper在MVC中的运用小结
- AutoMapper
- AutoMapper
- AutoMapper
- DAO运用实例
- DAO运用实例
- spring 实例运用
- datalist的实例运用
- GetTextExtentExPoint运用与实例。
- jQuery 实例运用
- 关于FastJson中jsonArray转换成list集合的方法
- ECharts2绘制支持IE6,7,8的可缩放折线图
- WebSocket的C++服务器端实现
- linux命令随笔(1)
- MySQL 管理 用户设置
- AutoMapper运用实例
- THE MATRIX PROBLEM HDU 3666 UVALive
- 尽量用++i 而不是 i++
- 机器学习那些事
- hdu1404 sg
- 移植openssh服务器到ARM处理器上
- 湖北工业职业技术学院联合武汉美斯坦福骗取学生每年除学费外8000元
- nginx配置
- JQuery学习随笔