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. spring注解版

    第一.spring框架快速入门 1.1什么是spring 框架 Spring 框架是 Java 应用最广的框架,它的成功来源于理念,而不是技术本身,它的理念包括 IoC (Inversion of C ...

  2. phpfor函数和foreach函数

    PHP for 循环 PHP While 循环 PHP 函数 PHP for 循环执行代码块指定的次数. PHP for 循环 如果您已经提前确定脚本运行的次数,可以使用 for 循环. 语法 for ...

  3. 大哥带的XSS练习

    0x01反射型 <script>alert("zhong")</script> 可以看见什么都没有过滤 0x02存储型XSS http://www.xss_ ...

  4. MYSQL中NULL陷阱

    1.NULL值不能做比较,跟任何值比较,NULL值都不会被筛选出来 2.NULL值做数学运算后依旧为NULL,比如 SELECT 5 + NULL 结果为NULL,但是SELECT 5+ '' 结果为 ...

  5. 小程序踩坑之获取不到e.target.dataset的值

    在页面与js传值中我们经常用到data-id="1"的方式,然后通过e.target.dataset.id取id的值今天在获取值时怎么也取不到,后来发现e对象有currentTar ...

  6. html5 canvas简易时钟

    <canvas id='clock' width=500 height=500> 您的浏览器需要升级 </canvas> <script type="text/ ...

  7. MQTT协议 Websocket JS客户端

    特别提示:本人博客部分有参考网络其他博客,但均是本人亲手编写过并验证通过.如发现博客有错误,请及时提出以免误导其他人,谢谢!欢迎转载,但记得标明文章出处:http://www.cnblogs.com/ ...

  8. DS博客作业--课程总结

    1.当初你是如何做出选择计算机专业的决定的? 经过一年学习,你的看法改变了么,为什么? 你觉得计算机是你喜欢的领域吗,它是你擅长的领域吗? 为什么? 刚开始填报志愿的时候,因为我个人是没有什么比较特别 ...

  9. spark 源码编译 standalone 模式部署

    本文介绍如何编译 spark 的源码,并且用 standalone 的方式在单机上部署 spark. 步骤如下: 1. 下载 spark 并且解压 本文选择 spark 的最新版本 2.2.0 (20 ...

  10. prism App.config 配置

    <?xml version="1.0" encoding="utf-8" ?> <configuration> <configSe ...