问题标签 [automapper-9]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
automapper - AutoMapper - 映射到接口属性
我正在使用 AutoMapper 的可查询扩展将 Entity Framework Core 实体映射到 DTO。
一些 DTO 具有如下接口属性:
映射配置位于 AutoMapper 配置文件中:
目前,我收到一个异常“缺少从 Apple 到 IFruitDto 的地图。使用 CreateMap' 创建。添加该映射后,我收到了一个异常,即 IFruitDto 无法实例化(这是有道理的,它是一个接口,而不是一个类)。
映射到 AppleTreeDto 时,如何告诉 Automapper 将 AppleDto 用于 Fruits 集合?这样做的最佳方式是什么?我应该为每个接口属性编写一个类型转换器吗?
c# - 在 AutoMapper 中,如何从抽象基类项目到接口
我正在尝试将来自 CosmosDB 支持的 EF Core 的许多实体映射到实现接口的等效具体类型集。为简单起见,在下面的示例中,我只是将其简化为List<T>.
IAccount当我运行我的代码时,我得到一个关于没有默认构造函数的异常。
`IAccount' 没有默认构造函数(参数 'type')'
错误发生在var query = mapper.ProjectTo<IAccount>(repo);。我已经尝试了所有我能想到的配置组合,但我被卡住了。
我当前的版本如下,它是从我原来的类中剥离出来的。这就是AccountBase存在的原因,这在示例中并不明显。
源类型
目的地类型
测试
我的目标是得到一个OrganizationwhenOrganizationEntity遇到,同样是一个Userfor UserEntity。
我已经尝试过.DisableCtorValidation(),.ConvertUsing()但那些对我的测试没有帮助。
c# - 子实体的 AutoMapper MapExpression 失败
我正在映射 Linq 查询的选择表达式(投影)。这样做是为了将逻辑层与数据访问层分离,并且逻辑层应该只使用 DTO。
此映射因错误而失败,Expression of type 'DTOs.CitizenDto' cannot be used for return type 'Entities.Citizen'但在CountyInfoDto属性Citizens中具有 type CitizenDto。请注意所有映射配置文件都是有效的,并且可以正确映射简单的对象。
如果我这样做,一切正常:
或者这也有效:
有没有可能避免这个错误?
课程:
映射:
我正在使用AutoMapper.Extensions.ExpressionMapping,更新到最新版本后错误是:No coercion operator is defined between types 'Entities.CountyInfo' and 'DTOs.CountyInfoDto'.
validation - Automapper 验证源和目标成员
我一直在使用 Automapper,但这是我第一次使用 9.0 automapper。每当源或目标中弹出一个新字段并且我没有双向映射时,我希望 Automapper 抱怨。
通过尝试我发现
似乎可以解决问题。只是,我收到一个警告,即MemberList枚举没有[Flags]属性。我现在的问题是,这应该有效吗,即我可以依赖它,还是这只是一个巧合,可以在下一个版本中消失?
c# - Automapper - 从源子对象到目标的映射包括父值
我目前在尝试从源对象上的子属性映射整个目标对象时遇到问题。类似于此处描述的内容:Automapper - 如何从源子对象映射到目标
我已经使用了上面链接中描述的 .ConstructUsing 方法,但是我看到了一些奇怪的行为,其中输出的映射对象从父对象而不是子对象获取值。
我在这里做了一个问题的演示:https ://dotnetfiddle.net/OdaGUr
这是我的代码的问题,我应该使用不同的方法来实现我想要做的事情还是 AutoMapper 的错误?
编辑:
c# - 自动映射器自定义解析器源成员到目标对象列表映射问题
场景如下:
源对象:
目标对象:
所以为了将地址成员从源映射到目标,我制作了这个自定义解析器:
我面临的问题是,当我定义我这样编写的探查器时,我似乎无法通过 personSrc 类:
很可能我的个人资料没有正确实施,但是我似乎找不到正确实施的示例。
c# - 将具有抽象属性的类映射到目的地
我在将包含抽象属性的容器类映射到我的视图模型目标类时遇到了一些问题。
映射源类
映射目标类
映射配置
问题是当我映射GiftcardDetailResponse到GiftcardDetailViewModel. 例如,如果我的代码看起来像这样
执行树看起来像这样
它似乎只选择在两者中共享相同名称的属性,GiftcardInstanceDTO而GiftcardDetailViewModel不是使用我定义的映射。
但是当我只将抽象属性显式映射到我的视图模型时,我正在寻找类似于执行树的东西,例如
这正确地显示了我的派生映射
文档说IncludeMembers,当已经定义映射时,我可以使用将子对象展平到目标对象。但是当子对象是抽象的时,这种行为在这种情况下似乎不能正常工作。
automapper-9 - 将 AutoMapper 从 v6 升级到 v9 并使用分辨率上下文进行单元测试
我希望有人能帮助我。我们目前正在将 AutoMapper 从 v6 升级到 v9 - 我们会升级到 v10,但无法创建新的ResolutionContext影响我们的单元测试。也就是说,对于 v9,我们在单元测试 AutoMapper 转换器方面仍然存在以下问题......
转换器类:
在 AutoMapper 6 之前,我们有以下单元测试(使用 Xunit):
本质上,这工作正常,但是自从升级到 v9 后,映射设置在通过解析上下文时丢失了。这意味着Mapper.Map<FixedBarDestinationObject>()总是返回的结果调用null。
我知道ResolutionContext可能略有变化,但我不明白如何解决此问题并确保将模拟映射传递给底层转换器。
感谢您提供任何帮助或建议。
c# - Automapper ValueConverter 的单元测试用例,模拟映射器未返回预期模型
我已经编写了 valueconverter 并为它编写了一个测试用例。当我将模拟映射器传递给解析上下文时,它的行为与设置不同。这是我的代码 -
转换器 -
测试用例 -
我在响应 context.Mapper.Map(airline); 时得到空值。在航空公司转换器中。这里有什么问题?
c# - AutoMapper 将两个模型映射到一个视图模型
我有两个模型和一个视图模型。
模型:
视图模型:
我尝试添加配置:
和控制器:
viewMode1 有 10 个用户,viewMode2 有 3 个角色。
但是,合并结果 indexViewModel 有 10 行数据,但 RoleName 为空。
如果我将 viewModel 与 viewMode2 交换,则 indexViewModel 有 3 行数据并且 UserName 为空。
我还尝试删除“.ForAllMembers(o => o.Condition((source, destination, member) => member != null));” ,但仍然无法正常工作。
我怎样才能映射RoleName到indexViewModel?
我的 AutoMapper 版本是9.0.0.
谢谢!