首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

使用Automapper忽略子类映射中的基类属性的问题

当使用 Automapper 进行对象映射时,如果需要忽略子类映射中的基类属性,可以使用以下方法:

  1. 使用 ForSourceTypeForAllMembers 方法配置映射规则:
代码语言:csharp
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<BaseClass, DestinationClass>()
        .ForSourceType<SubClass>()
        .ForAllMembers(opt => opt.Ignore());
});
  1. 使用 Include 方法将基类映射规则包含在子类映射规则中,并使用 ForAllMembers 方法忽略基类属性:
代码语言:csharp
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<BaseClass, DestinationClass>()
        .ForMember(dest => dest.Property, opt => opt.Ignore());

    cfg.CreateMap<SubClass, DestinationClass>()
        .IncludeBase<BaseClass, DestinationClass>()
        .ForAllMembers(opt => opt.Ignore());
});
  1. 使用 ConvertUsing 方法自定义转换器,在转换器中忽略基类属性:
代码语言:csharp
复制
Mapper.Initialize(cfg =>
{
    cfg.CreateMap<BaseClass, DestinationClass>()
        .ConvertUsing(src =>
        {
            var dest = new DestinationClass();
            // 忽略基类属性
            return dest;
        });
});

这样,在使用 Automapper 进行对象映射时,就可以忽略子类映射中的基类属性。

页面内容是否对你有帮助?
有帮助
没帮助

相关·内容

使用 AutoMapper 自动映射模型时,处理不同模型属性缺失问题

使用 AutoMapper 可以很方便地在不同模型之间进行转换而减少编写太多转换代码。不过,如果各个模型之间存在一些差异的话(比如多出或缺少一些属性),简单配置便不太行。...本文帮助你解决这个问题。...关于 AutoMapper 系列文章: 使用 AutoMapper 自动在多个数据模型间进行转换 使用 AutoMapper 自动映射模型时,处理不同模型属性缺失问题 属性增加或减少 前面我们所有的例子都是在处理要映射类型其属性都一一对应情况...然而,如果所有的属性都是一样,那我们为什么还要定义多个属性类型呢(Attribute 不一样除外)。正常开发情况下这些实体类型都会是大部分相同,但也有些许差异情况。...欢迎转载、使用、重新发布,但务必保留文章署名 吕毅 (包含链接: https://blog.walterlv.com ),不得用于商业目的,基于本文修改后作品务必以相同许可发布。

57010

AutoMapper快速上手

可以看到我们只需要简单使用便可以完成两个对象之间属性映射,开发中极大省去了枯燥属性转换....三,AutoMapper性能    AutoMapper做为一个被广泛使用OOM框架,其底层使用是表达式树来进行映射,所以在性能方面还是比较突出,下面是我做一个性能测试 //初始化AutoMapper...可以看到映射了1万个对象只花费了191毫秒.虽然说对象属性越多映射所下所花费时间会越长,但是这个性能已经极为OK了 四.AutoMaper使用 AutoMapper作为一个易用性极强并且简便OOM...() //ForMember可以配置一系列配置信息 //参数1:目标类型属性表达式 //参数2:执行操作选择 AutoMapper定义了一系列配置选择供开发者使用...11.无须配置Helper 此类只能简单进行配置,无法实现复杂变化,不过一般使用则无需配置【此类出处:https://home.cnblogs.com/u/xiadao521/】 /// <summary

4.2K30
  • 子类对象获取值方式验证,通过父类属性方式获取不到值,需要使用get方法

    子类对象获取值方式验证,通过父类属性方式获取不到值,需要使用get方法 静态属性通过.属性方式获取,对象获取使用get方法获取 package com.example.core.mydemo.java...channelName) { this.channelName = channelName; } /** * partnerName: //通过父类属性方式获取不到值...,需要使用get方法 * channelName: //通过父类属性方式获取不到值,需要使用get方法 * partnerName2:合作商名称 * channelName2...* channelName3:渠道商名称 //对象自身属性值可以获取 * partnerName4:合作商名称 * channelName4:渠道商名称...* MAX=100 静态属性通过.属性方式获取,对象获取使用get方法获取 * @param args */ public static void main(String

    9910

    浅入 AutoMapper

    目录 浅入 AutoMapper AutoMapper 基本使用 映射配置 映射检查 性能 Profile 配置 依赖注入 表达式与 DTO 浅入 AutoMapper 在 Nuget 搜索即可安装,目前笔者使用版本是...); 这个 IMapperConfigurationExpression 是一个链式函数,可以为映射中每个字段定义逻辑。...默认情况,TestA 跟 TestB 中字段不太一致的话,可能有些地方容易造成忽略,开发者可以使用检查器去检查。...在提高灵活性等情况下,会牺牲一些性能,主要不是大量计算情况下,并不会有太大性能问题。...一种映射定义一个 Profile ?这样太浪费空间了;一个模块定义一个 Profile ?这样太杂了。不同程序有自己架构,按照项目架构选择 Profile 粒度就好。

    1.4K20

    Python 基础(十四):错误和异常

    我们编写程序通常使用开发工具编写,比如:我使用 Pycharm 工具编写 Python 程序,像这种语法错误,在编写程序时,编译器就会检测出来并提示我们,因此,我们编写好程序几乎不会出现这种问题。...,BaseException为所有异常,其下面分为:SystemExit、KeyboardInterrupt、GeneratorExit、Exception 四异常,Exception 为所有非系统退出异常...常规错误 StopIteration 迭代器没有更多值 GeneratorExit 生成器(generator)发生异常来通知退出 StandardError 所有的内建标准异常 ArithmeticError...断言语句失败 AttributeError 对象没有这个属性 EOFError 没有内建输入,到达EOF 标记 EnvironmentError 操作系统错误 IOError 输入/输出操作失败...) KeyError 映射中没有这个键 MemoryError 内存溢出错误(对于Python 解释器不是致命) NameError 未声明/初始化对象 (没有属性) UnboundLocalError

    1.4K20

    SqlAlchemy 2.0 中文文档(五)

    使用声明性 最常见方法是通过将 DeclarativeBase 超作为子类生成“声明性”: from sqlalchemy.orm import DeclarativeBase # declarative...使用声明性,新映射被声明为子类: from datetime import datetime from typing import Optional from sqlalchemy import...## 使用声明性 最常见方法是通过对DeclarativeBase超进行子类化来生成“声明性”: from sqlalchemy.orm import DeclarativeBase #...使用声明性,新映射被声明为子类: from datetime import datetime from typing import Optional from sqlalchemy import...另请参阅 在声明后向映射添加关系 - 类似的例子可以参考relationship() 注意 将映射属性分配给已经映射,只有在使用“声明性”,即用户定义DeclarativeBase子类,或者由

    26310

    一步一步创建ASP.NET MVC5程序(五)

    开发人员需要作事则是通过AutoMapper配置两个实体对象之间一些映射关系。 为什么使用AutoMapper? 映射代码是无聊。测试映射代码更无聊。...AutoMapper提供了一些简单配置,还有一些简单映射测试。真正问题可能是“为什么使用对象-对象映射呢”?...().Execute(); } } } 到此,AutoMapper安装、配置就基本完成了,接下来我们将学习在WEB项目[TsBlog.Frontend]控制器操作中如何使用AutoMapper...使用AutoMapper 1.打开WEB项目[TsBlog.Frontend],添加对TsBlog.ViewModel引用。.../tag/v1.5 本文学习到此结束,本系列未完待续,我们下期再见…… 如果你喜欢Rector本系列文章,请为我点个大大赞,以支持Rector在后续写作中更有(激)情,哈哈。。。

    1.7K100

    从壹开始前后端分离【 .NET Core2.2 +Vue2 】框架之十二 、十三:DTOs(数据传输对象)

    Name属性值,然后再赋值给BookViewModelAuthor属性,这样看起来行通,但是想一想,如果打算在以后开发中把Name拆分成两个-FisrtName和LastName,我天呐!...只需一键操作,就能一劳永逸,解决所有问题,然后通过依赖注入,快速使用:        //AutoMapper自动映射 //Mapper.Initialize(cfg => cfg.CreateMap...以上这些大家简单看看原理即可,意思大家肯定都懂,下边开始讲解如何使用 3、引入 AutoMapper 相关包 在Blog.Core.Services项目中引用Nuget包,AutoMapper 和...配置放在别的层(比如Service层), 如果没解耦的话,可以services.AddAutoMapper(),参数留空,AutoMapper会从所有引用程序集里找继承Profile,如果解耦了...那当然很方便啦,要是一个复杂,比如属性名字不一样,或者说有子类等嵌入型咋办?

    50820

    Python异常

    略 异常对象 Python异常是内置经典Exception子类实例 为了向后兼容,Python还允许使用字符串或任何经典实例 Python2.5之后,Exception是BaseException...继承新式子类 Python自身引发所有异常都是Exception子类实例 大多标准异常都是由StandardError派生,其有3个抽象子类 ArithmeticError 由于算术错误而引发异常...OverflowError,ZeroDivision,FloatingPointError LookupError 容器在接收一个无效键或索引时引异常 IndexError,keyError...EnviromentError 由于外部原因而导致异常 IOError,OSError,WindowsError 标准异常 AssertionError 断言语句失败 AttributeError...): pass 标准库中使用其它异常 Python 标准库中许多模块都定义了自己异常,如socket中socket.error 等同于自定义异常 assert语句用于在程序中引入调式代码

    2.4K90

    C# 在定义好方法让子类继承接口就能实现

    在 C# 里面,接口定义只需要里面存在和接口声明相同方法或属性就可以,而存在方法或属性是在子类定义还是里面定义都无所谓。...通过这样方法可以在里面添加一些辅助方法,而这些方法默认不给子类开启,除非子类继承了接口 在定义方法,如果在子类继承接口里面声明方法刚好和定义相同,那么子类可以不需要再次定义。...在可以判断当前自己类型是否继承了接口 这个方法用在里面期望在特定代码里面给子类暴露一些内部方法,但是又不能让子类随意调用。...或者预设了一些方法,这些方法存在性能或其他问题,只有子类声明自己需要这个功能时候才被调用 内部方法隐藏 在里面有一些内部方法,默认不让子类使用,但只有某些特殊子类情况才能被使用。...,同时因为子类继承了预期接口而能使用 这就是通过在里面定义好方法和定义好代码逻辑,只要子类继承接口才能实现

    58820

    C++强制类型转换

    :将派生指针或引用转化为指针或引用 dynamic_cast   (1)执行派生指针或引用与指针或引用之间转换。   ...const_cast   (1)去除const常量属性,使其可以修改 reinterpret_cast   仅仅是复制n1比特位到d_r, 没有进行必要分析.interpret_cast是为了映射到一个完全不同类型意思...我们映射到类型仅仅是为了故弄玄虚和其他目的,这是所有映射中最危险。(这句话是C++编程思想中原话。...我们映射到类型仅仅是为了故弄\ 玄虚和其他目的,这是所有映射中最危险。...&c)); //前两个输出值是相同,最后一个则会在原基础上偏移4个字节,这是因为static_cast计算了父子类指针转换偏移量,\ 并将之转换到正确地址(c里面有m_a,m_b

    1.3K10

    SqlAlchemy 2.0 中文文档(十六)

    与所有情况一样,鉴别器 列用于区分不同请求子类型,然后返回任何可能子类对象。返回对象将具有对应于属性填充,对应于子表属性将以未加载状态开始,在访问时自动加载。...使用 selectin_polymorphic() 要解决在访问子类属性性能问题,可以使用selectin_polymorphic()加载策略,以便一次性急切地加载这些附加属性。...使用 selectin_polymorphic() 为了解决在访问子类属性性能问题,可以使用selectin_polymorphic()加载器策略,一次性预加载这些额外属性到许多对象中。...polymorphic_on – 作为给定可选择对象“鉴别器”列使用列。如果未给出,则将使用 mapper polymorphic_on 属性(如果有)。...polymorphic_on – 作为给定可选择对象“鉴别器”列使用列。如果未给出,则将使用 mapper polymorphic_on 属性(如果有)。

    26410

    Python3 常见错误和异常处理

    \ KeyboardInterrupt 用户中断执行(通常是输入^C) 用户按下Ctrl-C(或者Delete)终止一个正在运行程序时,会产生,重新运行即可 Exception 常规错误 \...所有数值计算错误 \ FloatingPointError 浮点计算错误 这个错误由导致错误浮点操作产生,前提是已经打开了浮点异常控制(fpectl),启用fpectl时,要求编译解释器提供...LookupError 无效数据查询 \ IndexError 序列中没有此索引(index) 如果索引超出范围,就会产生IndexError KeyError 映射中没有这个键 如果没有找到一个值作为字典键...NotImplementedError 尚未实现方法 用户自定义可能产生NotImplementedError,来指示一个方法或者行为需要子类定义 SyntaxError Python 语法错误...UnicodeError Unicode 相关错误 ValueError一个子类,出现Unicode问题时产生 UnicodeDecodeError Unicode 解码时错误 \ UnicodeEncodeError

    1.5K20

    ABP入门系列(4)——创建应用服务

    (通过继承该接口,ABP会自动帮助依赖注入) ABP为IApplicationService提供了默认实现ApplicationService,该提供了方便日志记录和本地化功能。...Id属性简单。...四、使用AutoMapper自动映射DTO与实体 1,简要介绍AutoMapper 开始之前,如果对AutoMapper不是很了解,建议看下这篇文章AutoMapper小结。...AutoMapper使用步骤,简单总结下: 创建映射规则(Mapper.CreateMap();) 类型映射转换(Mapper.Map<source,destination...四、创建统一入口注册AutoMapper映射规则 如果在映射规则既有通过特性方式又有通过代码方式创建,这时就会容易混乱不便维护。 为了解决这个问题,统一采用代码创建映射规则方式。

    1.7K70

    SqlAlchemy 2.0 中文文档(六)

    虽然命令式映射使用 properties 字典来建立所有映射类属性,但在声明式映射中,这些属性都在定义中内联指定,在声明性表映射情况下,这些属性都与将用于生成 Table 对象 Column 对象内联...这个属性还可以分配给单个和/或registry以影响每个映射层次结构MetaData集合使用。...在命令式映射中,利用属性字典来建立所有映射类属性,而在声明式映射中,这些属性都与定义一起内联指定,这在声明式表映射情况下与将用于生成 Table 对象 Column 对象一起内联。....metadata属性存在于直接在,并且通过继承也存在于映射上。...扩充 除了使用纯混合之外,本节中大多数技术也可以直接应用于,用于适用于从特定派生所有模式。

    35910

    01-EF Core笔记之创建模型

    忽略属性 modelBuilder.Entity() .Ignore(b => b.LoadedFromDatabase); 如果一个属性或类型不在实体中,但是又想包含在数据库映射中时...继承 关于继承关系如何在数据库中呈现,目前有三种常见模式: TPH(table-per-hierarchy):一张表存放子类所有列,使用discriminator列区分类型,目前EF Core...仅支持该模式 TPT(table-per-type ):子类不在同一个表中,子类对应表中仅包含主键和扩展字段,目前EF Core不支持该模式 TPC(table-per-concrete-type...):子类不在同一个表中,子类中包含所有字段,目前EF Core不支持该模式 EF Core仅支持TPH模式,子类数据将存储在同一个表中。...使用有参构造函数需要注意: 参数名应与属性名字、类型相匹配 如果参数中不具有所有字段,则在调用构造函数完成后,对未包含字段进行赋值 使用懒加载时,构造函数需要能够被代理访问到,因此需要构造函数为public

    3.1K20
    领券