AutoMapper在MVC中的运用05-映射中的忽略、处理null、多种映射转换 末蓝、 2021-11-02 12:34 266阅读 0赞 本篇AutoMapper使用场景: ※ 动态实现接口方法或属性 ※ 目标中的属性如果比源多,可以忽略多出的属性 ※ 目标有virtual属性,可忽略 ※ 目标属性值为null的解决办法 ※ int转string ※ bool转string ※ DateTime转String ※ 判断条件 动态实现接口方法或属性 public interface ICreateOrderMessage \{ string CustomerName \{ get; set; \} \} □ 使用 public ActionResult Dynamic() \{ var order = new \{CustomerName = "darren"\}; var message = Mapper.DynamicMap<ICreateOrderMessage>(order); //message中会有CustomerName属性和值 return View(message); \} □ 要点 传入的实现类或匿名类,动态实现接口方法或属性。 目标中的属性如果比源多,可以忽略多出的属性 □ View model public class Order3Dto \{ public decimal Amount \{ get; set; \} \} □ Domain model public class Order3 \{ public int Id \{ get; set; \} public decimal Amount \{ get; set; \} \} □ 映射配置 Mapper.CreateMap<Order3Dto, Order3>() .ForMember("Id", opt => opt.Ignore()); □ 使用 public ActionResult To() \{ var orderDto = new Order3Dto() \{Amount = 50m\}; //源没有的属性,预先赋值 var order = new Order3() \{Id = 4\}; Mapper.Map(orderDto, order); return View(order); \} □ 要点 如果目标的属性多于源中的属性,并且不赋值,会报错。 目标有virtual属性,可忽略 □ View model public class UserInfoViewModel \{ public int ID \{ get; set; \} public string LoginName \{ get; set; \} \} □ Domain model public class UserInfo \{ public UserInfo() \{ this.R\_UserInfoActionInfo = new HashSet<R\_UserInfoActionInfo>(); \} public int ID \{ get; set; \} public string LoginName \{ get; set; \} public DateTime SubTime \{ get; set; \} //目标中多出的属性 public virtual ICollection<R\_UserInfoActionInfo> R\_UserInfoActionInfo \{ get; set; \} //目标中多出的属性,且是virtual \} public class R\_UserInfoActionInfo \{ public string Name \{ get; set; \} \} □ 映射配置 Mapper.CreateMap<UserInfoViewModel, UserInfo>() .ForMember("SubTime", opt => opt.Ignore()) .ForMember("R\_UserInfoActionInfo", opt => opt.Ignore()); □ 使用 public ActionResult Concern() \{ UserInfoViewModel vmodel = new UserInfoViewModel() \{ LoginName = "Darren" \}; UserInfo dmodel = Mapper.Map<UserInfoViewModel, UserInfo>(vmodel); dmodel.SubTime = DateTime.Now; //多出的属性虽然在映射配置中忽略了,但还是可以赋值 return View(dmodel); \} 目标属性值为null的解决办法 .ForMember(dto => dto.AuthorBio, opt => opt.NullSubstitute("Not set yet.")) int转string .ForMember(dto => dto.NumberOfPosts, opt => \{ opt.AddFormatter<NumberOfPostsFormatter>(); \}) public class NumberOfPostsFormatter : IValueFormatter \{ public string FormatValue(ResolutionContext context) \{ int value = (int)context.SourceValue; if(value = 1) return "Number of Posts: One post"; return "Number of posts:" + value; \} \} bool转string .ForMember(dto => dto.VIP, m => m.ResolveUsing<VIPResolver>().FromMember(x => x.VIP)) public class VIPResolver : ValueResolver<bool, string> \{ protected override string ResolveCore(bool source) \{ return source ? "Y" : "N"; \} \} DateTime转String .ForMember(dto => dto.DateOfBirth, m => m.AddFormatter<DateFormatter>()); public class DateFormatter : IValueFormatter \{ public string FormatValue(ResolutionContext context) \{ return ((DateTime)context.SourceValue).ToLongDateString(); \} \} 判断条件 Mapper.CreateMap<AutoMapperInMvc01.Portal.Models.Foo, AutoMapperInMvc01.Portal.Models.Bar>() .ForMember("baz", opt => opt.Condition(context => context.SourceValue.ToString() == "0")); 转载于:https://www.cnblogs.com/darrenji/p/3570491.html
相关 Spring MVC中的常见请求映射错误 在Spring MVC中,常见的请求映射错误可能包括以下几种: 1. **不存在的控制器类**:如果你试图访问一个不存在或者已被移除的控制器类的方法,就会报错。 `` 我就是我/ 2024年09月10日 23:15/ 0 赞/ 57 阅读
相关 如何在Java中处理HTTP请求,例如Spring MVC的HTTP请求映射 在Java中处理HTTP请求主要是通过Web容器(如Tomcat)和相应的框架,如Spring MVC。 1. **创建Web应用**: 首先,你需要在IDE(如Ecl 妖狐艹你老母/ 2024年09月05日 23:21/ 0 赞/ 40 阅读
相关 AutoMapper对象映射器 基于约定的对象-对象映射器。消除将一个对象映射到另一个对象的所有麻烦。 官网:[http://automapper.org/][http_automapper.org]文档: 蔚落/ 2024年03月27日 15:36/ 0 赞/ 80 阅读
相关 实体映射-------AutoMapper 现在有2个实体(A、B),2个实体中的部分字段是相同的,现在把A实体获取的值赋值给B实体,利用AutoMapper实体映射可以轻松解决 [参考][Link 1] 实体中不同 淩亂°似流年/ 2023年06月05日 11:13/ 0 赞/ 8 阅读
相关 Spring MVC的映射请求 一、SpringMVC常用注解 @Controller 负责注册一个bean 到spring 上下文中。 @Service 声明Service组件,例如@Se 约定不等于承诺〃/ 2022年10月01日 02:49/ 0 赞/ 198 阅读
相关 Hibernate 映射文件中多种关联关系的实现 Hibernate 中,常常涉及数据表之间的多对多,一对多,多对一的 表关系。现分别给出,这三类关系的代码实现。 Oeder 的 Hibernate 映射,集合采用 one- 痛定思痛。/ 2022年09月22日 14:59/ 0 赞/ 143 阅读
相关 AutoMapper在MVC中的运用05-映射中的忽略、处理null、多种映射转换 本篇AutoMapper使用场景: ※ 动态实现接口方法或属性 ※ 目标中的属性如果比源多,可以忽略多出的属性 ※ 目标有virtual属性,可忽略 ※ 目标属性 末蓝、/ 2021年11月02日 12:34/ 0 赞/ 267 阅读
相关 AutoMapper在MVC中的运用04-string映射各种类型、一个属性映射多个属性等 本篇AutoMapper使用场景: ※ 类型转换,源string类型分别转换成int, DateTime,Type ※ 源和目标都包含复杂类型属性 ※ 把源中的一个 向右看齐/ 2021年11月02日 12:34/ 0 赞/ 235 阅读
相关 .NET CORE 中使用AutoMapper进行对象映射 AutoMapper 基于约定的对象-对象映射器。 `AutoMapper`使用流畅的配置`API`定义对象-对象映射策略。`AutoMapper`使用基于约定的匹 ╰半夏微凉°/ 2021年06月26日 16:06/ 0 赞/ 439 阅读
还没有评论,来说两句吧...