关闭
当前搜索:

AutoMapper官方文档(十八)【条件映射,开放泛型,了解你的映射】

AutoMapper允许你在属性映射之前添加条件到必须满足的属性。这可以用在像下面这样的情况下,我们试图从int映射到unsigned int。class Foo{ public int baz; }class Bar { public uint baz; }在下面的映射中,属性baz只会在源对象中大于或等于0时被映射。Mapper.Initialize(cfg => { cfg.Cre...
阅读(41) 评论(0)

AutoMapper官方文档(十七)【配置】

创建一个MapperConfiguration实例并通过构造函数初始化配置:var config = new MapperConfiguration(cfg => { cfg.CreateMap(); cfg.AddProfile(); });MapperConfiguration实例可以静态存储在一个静态字段中,也可以存储在一个依赖注入容...
阅读(42) 评论(0)

AutoMapper官方文档(十六)【可查询扩展】

当使用带有AutoMapper标准Mapper.Map函数的ORM(如NHibernate或Entity Framework)时,您可能会注意到,当AutoMapper尝试将结果映射到目标类型时,ORM将查询图中所有对象的所有字段。如果你的ORM暴露IQueryables,你可以使用AutoMapper的QueryableExtensions辅助方法来解决这个关键的问题。使用Entity Frame...
阅读(40) 评论(0)

AutoMapper官方文档(十五)【映射继承】

映射继承有两个功能: 从基类或接口配置继承映射配置 运行时多态映射继承基类配置是opt-in,您可以显式指定要从包含基本类型的配置继承的映射,也可以在包含IncludeBase的派生类型配置中指定该映射::CreateMap() .Include() .ForMember(d...
阅读(37) 评论(0)

AutoMapper官方文档(十四)【依赖注入】

AutoMapper支持使用静态服务定位构建自定义值解析器和自定义类型转换器的能力:Mapper.Initialize(cfg => { cfg.ConstructServicesUsing(ObjectFactory.GetInstance); cfg.CreateMap(); });或动态服务定位,用于基于实例的容器(包括 子/嵌套 容器)...
阅读(57) 评论(0)

AutoMapper官方文档(十三)【值转换器,Null替换,Map行为前后】

值转换器值转换器对另一种类型应用额外的转换。 在分配值之前,AutoMapper将检查要设置的值是否有任何相关的值转换,并在设置之前应用它们。您可以创建几个不同级别的值转换器: Globally Profile Map MemberMapper.Initialize(cfg => { cfg.ValueTransformers.Add(val +...
阅读(61) 评论(0)

AutoMapper官方文档(十二)【自定义值解析器】

尽管AutoMapper覆盖了不少目的地成员的映射场景,但有1%到5%的目标值需要一些帮助来解决。 很多时候,这个自定义的价值决议逻辑是领域逻辑,可以直接在我们的领域。 但是,如果这个逻辑仅仅涉及到映射操作,就会把我们的源类型弄乱,造成不必要的行为。 在这些情况下,AutoMapper允许为目标成员配置自定义值解析器。例如,我们可能想要在映射期间计算一个值:public class Source {...
阅读(47) 评论(0)

AutoMapper官方文档(十一)【自定义类型转换器】

有时候,你需要完全控制一种类型到另一种类型的转换。这通常是当一个类型看起来不像另一个类型时,转换函数已经存在,并且您希望从“松散”类型转换为更强类型,比如源类型的字符串到目标类型Int32。例如,假设我们有一个来源类型:public class Source { public string Value1 { get; set; } public string Value2 { get...
阅读(56) 评论(0)

AutoMapper官方文档(十)【嵌套映射】

在映射引擎执行映射时,可以使用多种方法之一来解析目标成员值。 其中一种方法是使用另一种类型映射,其中在映射配置中还配置了源成员类型和目标成员类型。 这使我们不仅可以平坦化我们的源类型,还可以创建复杂的目标类型。 例如,我们的源类型可能包含另一个复杂类型:public class OuterSource { public int Value { get; set; } public I...
阅读(45) 评论(0)

AutoMapper官方文档(九)【列表和数组】

AutoMapper只需要配置元素类型,而不是任何可能使用的数组或列表类型。 例如,我们可能有一个简单的源和目标类型:public class Source { public int Value { get; set; } }public class Destination { public int Value { get; set; } }所有基本的泛型集合类型都被支持:Mappe...
阅读(37) 评论(0)

AutoMapper官方文档(八)【内联映射】

AutoMapper即时创建类型映射(6.2.0中的新增功能)。 当您第一次调用Mapper.Map时,AutoMapper将创建类型映射配置并编译映射计划。 后续的映射调用将使用编译的映射。内联配置要配置内联映射,请使用映射选项:var source = new Source();var dest = Mapper.Map(source, opt => opt.Conf...
阅读(53) 评论(0)

AutoMapper官方文档(七)【配置验证】

配置验证手动卷映射代码尽管乏味,但具有可测试的优点。 AutoMapper背后的灵感之一是不仅消除了自定义映射代码,而且消除了手动测试的需要。 由于从源到目标的映射是基于约定的,因此您仍然需要测试您的配置。AutoMapper以AssertConfigurationIsValid方法的形式提供配置测试。假设我们对源和目标类型的配置略有不同:public class Source { publ...
阅读(39) 评论(0)

AutoMapper官方文档(六)【投影】

投影投影将源换为目标,而不是将对象模型展平。 没有额外的配置,AutoMapper需要一个平坦的目标地来匹配源类型的命名结构。 如果要将源值映射到与源结构不完全匹配的目标,则必须指定自定义成员映射定义。 例如,我们可能想要转向这个源代码结构:public class CalendarEvent { public DateTime Date { get; set; } public s...
阅读(37) 评论(0)

AutoMapper官方文档(五)【反向映射和复杂化】

从6.1.0开始,AutoMapper现在支持更丰富的反向映射支持。 鉴于我们的实体:public class Order { public decimal Total { get; set; } public Customer Customer { get; set; } }public class Customer { public string Name { get; set; }...
阅读(50) 评论(0)

AutoMapper官方文档(四)【扁平化(分割)映射】

扁平化映射对象-对象映射的一个常见用法是采用复杂的对象模型并将其扁平化为更简单的模型。 你可以采取一个复杂的模型,如:public class Order { private readonly IList _orderLineItems = new List(); public Customer Customer { get;...
阅读(41) 评论(0)

AutoMapper官方文档(三)【约定】

有条件的对象映射器条件对象映射器根据源和目标类型之间的条件创建新的类型映射。var config = new MapperConfiguration(cfg => { cfg.AddConditionalObjectMapper().Where((s, d) => s.Name == d.Name + "Dto"); });成员配置成员配置就像配置,但是你可以完全控制什么要用和不用。var...
阅读(58) 评论(0)

AutoMapper官方文档(二)【升级指南】

初始化您现在必须使用Mapper.Initialize或new MapperConfiguration()来初始化AutoMapper。如果您希望保持静态使用,请使用Mapper.Initialize。如果你有很多的Mapper.CreateMap调用,把它们移动到一个Profile,或者Mapper.Initialize,在启动时调用一次。例如在这里看到。Profiles不要覆盖Configure...
阅读(60) 评论(0)

AutoMapper官方文档(一)【入门】

什么是AutoMapper?AutoMapper是一个对象与对象的映射器。对象-对象映射通过将一种类型的输入对象转换为不同类型的输出对象来工作。让AutoMapper感兴趣的是,它提供了一些有趣的约定,从而弄清楚如何将类型A映射到类型B.只要类型B遵循AutoMapper建立的约定,映射两种类型几乎就是零配置。为什么使用AutoMapper?映射代码很无聊。测试映射代码更无聊。 AutoMapper...
阅读(64) 评论(0)

AutoMapper使用示例(二)【常规的转换器和分页功能】

Model层模型如下: public class SrcEmployee { public string Name { get; set; } public string Age { get; set; } public string Status { get; set; } public DateTime Hire...
阅读(2164) 评论(0)

AutoMapper使用示例(一)【结合ASP.NET MVC4 】

Model层的类: public class Member { public int MemberId { get; set; } public string FirstName { get; set; } public string LastName { get; set; } public int Age { get...
阅读(3010) 评论(0)
    个人资料
    • 访问:1065135次
    • 积分:15789
    • 等级:
    • 排名:第717名
    • 原创:313篇
    • 转载:762篇
    • 译文:107篇
    • 评论:274条
    博客专栏
    文章分类
    打赏
    如果你觉得我的文章对您有用,请随意打赏。 微信 支付宝