首页
学习
活动
专区
工具
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 ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。

65210

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

    4.2K30

    浅入 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的子类,或者由

    29610

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

    51720

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

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

    62420

    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++强制类型转换

    :将派生类指针或引用转化为基类指针或引用 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 属性(如果有)。

    28410

    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

    SqlAlchemy 2.0 中文文档(六)

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

    38710

    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
    领券