https://www.jianshu.com/p/5901a5d1ef15

配置验证(Configuration Validation)

手写映射配置代码虽然繁琐,但具有可测试的优点。AutoMapper背后的设计灵感之一是不仅消除了自定义映射代码,而且消除了手动测试的需要。由于从源到目标的映射是基于约定的,因此您仍需要测试配置。

AutoMapperAssertConfigurationIsValid方法的形式提供配置测试。 假设我们的源和目标类型有错误配置:

public class Source
{
public int SomeValue { get; set; }
} public class Destination
{
public int SomeValuefff { get; set; }
}

在目标类型中我们可能手抖打错了目标属性名或者重命名了源类型的属性名。要测试配置,只需创建一个单元测试来设置配置并执行AssertConfigurationIsValid方法:

Mapper.Initialize(cfg =>
cfg.CreateMap<Source, Destination>()); Mapper.Configuration.AssertConfigurationIsValid();

执行以上代码会产生AutoMapperConfigurationException,并带有描述性消息。 AutoMapper检查配置以确保每个目标类型成员在源类型上都有相应类型的成员。

重写配置错误

要修复配置错误(除了重命名源/目标成员),您有三种备选方案:

  • Custom Value Resolvers
  • Projection
  • Use the Ignore() option

使用第三个选项时,将用Ignore()填充对应目标类型上的成员,而不是通过Map操作。

Mapper.Initialize(cfg =>
cfg.CreateMap<Source, Destination>()
.ForMember(dest => dest.SomeValuefff, opt => opt.Ignore())
);

选择要验证的成员

默认情况下,AutoMapper使用目标类型所有成员是否都已经被映射来验证配置。使用CreateMap重新指定要验证的成员列表:

Mapper.Initialize(cfg =>
cfg.CreateMap<Source, Destination>(MemberList.Source);
cfg.CreateMap<Source2, Destination2>(MemberList.None);
);

使用MemberList.None跳过此映射验证。

05.AutoMapper 之配置验证(Configuration Validation)的更多相关文章

  1. 训练集(train set) 验证集(validation set) 测试集(test set)

    转自:http://www.cnblogs.com/xfzhang/archive/2013/05/24/3096412.html 在有监督(supervise)的机器学习中,数据集常被分成2~3个, ...

  2. struts2 的验证框架validation如何返回json数据 以方便ajax交互

    struts2 的验证框架validation简单,好用,但是input只能输出到jsp页面通过struts2的标签<s:fielderror  />才能取出,(EL应该也可以). 如果使 ...

  3. ASP.NET MVC 学习7、为Model Class的字段添加验证属性(validation attribuate)

    Adding Validation to the Model ,在Model中添加数据验证 参考:http://www.asp.net/mvc/tutorials/mvc-4/getting-star ...

  4. 05:ModelForm 数据验证 & 生成html & 数据库操作

    目录:Django其他篇 01:Django基础篇 02:Django进阶篇 03:Django数据库操作--->Model 04: Form 验证用户数据 & 生成html 05:Mo ...

  5. 在进行机器学习建模时,为什么需要验证集(validation set)?

    在进行机器学习建模时,为什么需要评估集(validation set)? 笔者最近有一篇文章被拒了,其中有一位审稿人提到论文中的一个问题:”应该在验证集上面调整参数,而不是在测试集“.笔者有些不明白为 ...

  6. 训练集(train set) 验证集(validation set) 测试集(test set)。

    训练集(train set) 验证集(validation set) 测试集(test set). http://blog.sina.com.cn/s/blog_4d2f6cf201000cjx.ht ...

  7. 【jQuery基础学习】06 jQuery表单验证插件-Validation

    jQuery的基础部分前面都讲完了,那么就看插件了. 关于jQuery表单验证插件-Validation validation特点: 内置验证规则:拥有必填.数字.E-Mail.URL和信用卡号码等1 ...

  8. CI 配置验证规则

    //判断表单域,提交表单显示对应的错误信息      $this->load->library('form_validation');      $config = array(      ...

  9. Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation)

    Ext.Net学习笔记21:Ext.Net FormPanel 字段验证(validation) 作为表单,字段验证当然是不能少的,今天我们来一起看看Ext.Net FormPanel的字段验证功能. ...

随机推荐

  1. SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession

    SpringMVC参数传递 HttpServletRequest,HttpServletResponse和HttpSession 2017-11-27 16:44:51 douunderstand 阅 ...

  2. nginx负载均衡 理解与测试

    Nginx负载均衡概述 Web服务器,直接面向用户,往往要承载大量并发请求,单台服务器难以负荷,我使用多台WEB服务器组成集群,前端使用Nginx负载均衡,将请求分散的打到我们的后端服务器集群中,实现 ...

  3. 如何运行一个分布式的Maven项目

    本人也属于一个新手小白,之前在公司运行的项目也都不涉及到maven...但是前两天运行一个maven项目的时候发现,第一次接触这个还是蛮让我措手不及的.在这里整理下自己当时走的弯路,或者遇到的一些问题 ...

  4. 获取select的option值

    <%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding= ...

  5. js手写笔记

    1.document.write(); 2.document.getElementById("").style.color="red";//sytle.font ...

  6. 怎样用 Bash 编程:语法和工具

    让我们通过本系列文章来学习基本的 Bash 编程语法和工具,以及如何使用变量和控制运算符,这是三篇中的第一篇. Shell 是操作系统的命令解释器,其中 Bash 是我最喜欢的.每当用户或者系统管理员 ...

  7. LVM创建过程

    磁盘挂载需求/cachesys 50G /journal 300G /wij 50G /dthealth 20G /data 500G /backup 500G #第1步,创建pv,并查状态信息.ls ...

  8. 迭代器(Iterator)的使用

    迭代器(Iterator)的使用 我这里主要讲一下聚合式迭代器(IteratorAggregate) 因为聚合式迭代器和ArrayIterator配合使用可以直接跳过Iterator需要实现的5个方法 ...

  9. 自动轮询的recycleView

    import android.content.Context; import android.support.v7.widget.RecyclerView; import android.util.A ...

  10. DateTimePicker 日期时间选择器

    在同一个选择器里选择日期和时间 DateTimePicker 由 DatePicker 和 TimePicker 派生,Picker Options 或者其他选项可以参照 DatePicker 和 T ...