AutoMapper在MVC中的运用04
来源:互联网 发布:淘宝购物要网银吗 编辑:程序博客网 时间:2024/05/16 11:49
本篇AutoMapper使用场景:
※ 类型转换,源string类型分别转换成int, DateTime,Type
※ 源和目标都包含复杂类型属性
※ 把源中的一个属性映射到目标中的多个属性
类型转换,源string类型分别转换成int, DateTime,Type
□ Domain model
public class Source2
{
public string Value1 { get; set; }
public string Value2 { get; set; }
public string Value3 { get; set; }
}
□ View model
public class Destination2
{
public int Value1 { get; set; }
public DateTime Value2 { get; set; }
public Type Value3 { get; set; }
}
□ 派生TypeConverter<,>自定义转换
//string转换成DateTime类型
public class DateTimeTypeConverter : TypeConverter<string,DateTime>
{
protected override DateTime ConvertCore(string source)
{
return System.Convert.ToDateTime(source);
}
}
//string转换成Type类型
//当然,这里的string必须是当前项目下的某个类
public class TypeTypeConverter : TypeConverter<string, Type>
{
protected override Type ConvertCore(string source)
{
Type type = Assembly.GetExecutingAssembly().GetType(source);
return type;
}
}
□ 映射配置
Mapper.CreateMap<string, int>().ConvertUsing(Convert.ToInt32);
Mapper.CreateMap<string, DateTime>().ConvertUsing<DateTimeTypeConverter>();
Mapper.CreateMap<string,Type>().ConvertUsing<TypeTypeConverter>();
Mapper.CreateMap<Source2, Destination2>();
□ 要点
类型转换用Convertusing<>()方法
源和目标都包含复杂类型属性
□ Domain model
public class OuterSource
{
public int Value { get; set; }
public InnerSource Inner { get; set; }
}
public class InnerSource
{
public int OtherValue { get; set; }
}
□ View model
public class OuterDest
{
public int Value { get; set; }
public InnerDest Inner { get; set; }
}
public class InnerDest
{
public int OtherValue { get; set; }
}
□ 映射配置
Mapper.CreateMap<OuterSource, OuterDest>();
Mapper.CreateMap<InnerSource, InnerDest>();
□ 使用
public ActionResult Nest()
{
var source = new OuterSource()
{
Value = 5,
Inner = new InnerSource(){OtherValue = 15}
};
var dest = Mapper.Map<OuterSource, OuterDest>(source);
return View(dest);
}
□ 要点
当源和目标都具有复杂属性并对应,复杂属性对应的类也需要配置映射。
把源中的一个属性映射到目标中的多个属性
□ Domain model
public class CalendarEvent
{
public DateTime EventDate { get; set; }
public string Title { get; set; }
}
public class CalendarEventForm
{
public DateTime EventDate { get; set; }
public int EventHour { get; set; }
public int EventMinute { get; set; }
public string Title { get; set; }
}
□ 自定义解析器
//转换成DateTime.Date
public class DateTimeToDateResolver : ValueResolver<CalendarEvent, DateTime>
{
protected override DateTime ResolveCore(CalendarEvent source)
{
return source.EventDate.Date;
}
}
//转换成DateTime.Hour
public class DateTimeToHourResolver : ValueResolver<CalendarEvent, int>
{
protected override int ResolveCore(CalendarEvent source)
{
return source.EventDate.Hour;
}
}
//转换成DateTime.Minute
public class DateTimeToMinuteResolver : ValueResolver<CalendarEvent, int>
{
protected override int ResolveCore(CalendarEvent source)
{
return source.EventDate.Minute;
}
}
□ 映射配置
Mapper.CreateMap<CalendarEvent, CalendarEventForm>()
.ForMember("EventDate", opt => opt.ResolveUsing<DateTimeToDateResolver>())
.ForMember("EventHour", opt => opt.ResolveUsing<DateTimeToHourResolver>())
.ForMember("EventMinute", opt => opt.ResolveUsing<DateTimeToHourResolver>());
□ 使用
public ActionResult Projection()
{
var calendarEvent = new CalendarEvent
{
EventDate = new DateTime(2008, 12, 15, 20, 30, 0),
Title = "Company Holiday Party"
};
CalendarEventForm from = Mapper.Map<CalendarEvent, CalendarEventForm>(calendarEvent);
return View(from);
}
- AutoMapper在MVC中的运用04
- AutoMapper在MVC中的运用01
- AutoMapper在MVC中的运用02
- AutoMapper在MVC中的运用03
- AutoMapper在MVC中的运用05
- AutoMapper在MVC中的运用06
- AutoMapper在MVC中的运用07
- AutoMapper在MVC中的运用小结
- Json Ajax 在Mvc中的简单运用
- MVC模式在android 中的运用
- MVC架构模式在Tkinter中的运用
- Nop- Automapper在Nopcommerce中的使用<五>
- Nop- Automapper在Nopcommerce中的使用<五>
- AutoMapper在的项目中的使用
- AutoMapper在asp.netcore中的使用
- AutoMapper运用实例
- PHP中的MVC运用
- MVC设计模式在asp用户登陆中的运用
- sizeof()和 strlen()函数
- 【OpenCV入门教程之二】 一览众山小:OpenCV 2.4.8 or OpenCV 2.4.9组件结构全解析
- 基本的SQl语句:update table1 set field1=value1 where 范围
- 20140225 服务器远程桌面连接错误
- oracle10查看用户权限
- AutoMapper在MVC中的运用04
- fgets()和fputs()函数
- STL中用erase()方法遍历删除元素
- Oracle dblink详解(转)
- hibernate映射文件写错可能引起的错误
- VS2010下安装boost库
- 58同城招聘信息手机号码采集器2014年2月25日
- 锁定明细表格的某一行数据(不允许修改)
- URAL 1586. Threeprime Numbers