问题标签 [automapper-4]

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.

0 投票
1 回答
1127 浏览

c# - How to register AutoMapper 4 with Simple Injector 3

I have an Azure web job that parses CSV containing categories and maps the result into regular objects.

I'm trying to replicate AutoMapper + Simple Injector configuration from one project in another by memory but getting an error:

AutoMapper.AutoMapperMappingException : Missing type map configuration or unsupported mapping.

Mapping types:

CsvCategory -> Category

WebJobs.Data.CsvCategory -> Data.Category

Destination path: Category

Source value: WebJobs.Data.CsvCategory

I can fix it by replacing the whole container configuration with this line:

but instead I'd like to learn where is the problem, where I'm doing this wrong.

0 投票
1 回答
674 浏览

c# - 请求子类时如何阻止Automapper映射到父类

我正在努力在我们的服务中实现 AutoMapper,并且在我们的单元测试中看到了一个非常令人困惑的问题。

首先,这个问题涉及以下对象及其各自的地图:

它还涉及这些对象,尽管此时我还没有使用 AutoMapper 映射这些对象:

这些类使用包含以下内容的自定义代码进行转换,其中source是 DbParty:

我遇到问题的测试创建了一个新的 DbParty,2 个新的 DbAccounts 链接到新的 DbParty,2 个新的 DbPartyAccountRoles 都链接到新的 DbParty,每个 DbAccounts 各有 1 个。然后它通过 DbParty 存储库测试一些更新功能。如果需要,我可以为此包含一些代码,它只需要一些时间来清理。

当它自己运行时,这个测试工作得很好,但是当在与另一个测试相同的会话中运行时(我将在下面详细说明),上述转换代码中的 Mapper 调用会抛出这个异常:

另一个测试还创建了一个新的 DbParty,但只有一个 DbAccount,然后创建了 3 个 DbPartyAccountRoles。我能够将这个测试缩小到打破另一个测试的确切行,它是:

注释掉这一行允许其他测试通过。

有了这些信息,我的猜测是测试正在中断,因为调用 AutoMapper 时与 DbAccount 对象后面的 CastleProxy 有关,但我对如何操作一无所知。

我现在已经设法运行相关的功能测试(对服务本身进行调用)并且它们似乎工作正常,这让我认为单元测试设置可能是一个因素,最值得注意的是有问题的测试是针对内存数据库中的 SqlLite。

0 投票
1 回答
1533 浏览

c# - 新版本的 Automapper 在定义子类型映射时抛出强制转换异常

假设我有一个源类和两个目标类,一个更通用,一个更具体(继承自更通用的一个):

对于 Automapper 3.*,此代码运行良好:

但是,升级到 4.0.4 后,此映射会引发异常:

我做错了什么还是AutoMapper中的错误?

.net fiddle 中的代码:

0 投票
2 回答
119 浏览

c# - AutoMapper 不从相关实体返回对象

我在从相关域模型返回对象时遇到问题。来自其他模型的对象返回 null。

我基本上想要完成的是返回一个 DTO,其中包含我想要从相关域模型中获得的字段,而不是将每个字段直接从域模型传递给 json。

请参阅下面的代码,有人可以建议。

结果的屏幕截图 数据库图

0 投票
2 回答
18003 浏览

c# - 使用 AutoMapper 合并对象

我正在尝试使用 AutoMapper 合并来自多个对象的数据,并且遇到了一些我似乎无法解决的问题。

我有一个像这样的对象:

显然子属性并不都是整数,但它们中的大多数都是可以为空的。

我在我的应用程序的两个不同层中有这些对象,所以我使用 AutoMapper 在它们之间进行转换:

转换效果很好,我对它的作用很满意。但是,现在我需要合并多个相同类型的对象。我将拥有一个对象的一个​​副本,其中填充了大部分或所有属性,另一个副本只有少数属性,其余为空。我希望将第二个(部分)对象的任何非空属性映射到第一个(已填写)对象中的相应字段。正如对此答案的公认答案所述,我也应该能够使用 AutoMapper 来执行此操作,但它没有给出任何明确的示例。

但是,当我去执行操作时,我得到一个与其中任何一个对象相同的对象,而不是像我想要的那样组合。

我期望 Child 的值是 10、20、100、40 和 50。但是,根据我是否将合并作为 Mapper.Map 中的源或目标,我得到 null、null、100、null、null 或 10、20 , 30, 40, 50。

有没有办法获得我的预期值?我认为列表是导致问题的原因,因为它不知道如何排列实体(以确定它们是否相同)。如果回答任何问题,我将能够通过查看一个或多个属性是否相同(在此示例中为 Key)来确定子记录是否相同。

0 投票
1 回答
1682 浏览

c# - 将平面 JSON/字典映射到模型(包含子类)

我想把一个扁平的json字符串变成一个模型,目标类有子类,扁平的json有所有带前缀的子类对象;像“{classname}.{property}”。

这是我的目标课程:

我尝试了以下方法:

我知道 Automapper 有 RecognizePrefix 和 RecognizeDestinationPrefix,但 AutoMapper 似乎只关心它是否在原始对象中,而不是子类。

可能我可以将我的 JSON 字符串设为字典,但即便如此我也不知道如何将它映射到带有子类的模型。

希望我可以拥有无​​限数量的子类,并且 JSON 字符串可以将平面 JSON 模型映射到模型。

0 投票
1 回答
630 浏览

c# - 具有相同类型的嵌套 Dto 的 Dto 失败

我在一个项目中遇到了一个问题,并在一个裸测试项目中成功地重现了它。

我有以下 dto:

对应的模型是完全一样的,只是有模型关系而不是 DTO(很明显)。

自动映射器配置:

最简单的查询:

这总是抛出一个NotSupportedException

这当然是自动映射器的问题。

现在我尝试了以下方法:

这使得查询context.Issues.ProjectTo<IssueDto>()...成功。但这反过来会直接映射AppUser结果为空值(或 0 表示 Id)。所以context.Users.ProjectTo<AppUserDto>().FirstOrDefault()(甚至Mapper.Map<AppUserDto>(context.Users.FirstOrDefault()))总是返回一个AppUserDto带有默认值的 props。

那么,如何在不牺牲对所述 dto 对象的直接映射的情况下使同一基本 dto 中的多个嵌套 dto 对象在同一个基础 dto 中工作?

使用 ProjectUsing 解决问题(如果我们可以同时进行直接映射)并不理想,但如果这是我能做到的唯一方法。

编辑:

很可能有一个错误,这是任何感兴趣的人的 github 问题。

0 投票
1 回答
1207 浏览

c# - 未在嵌套集合中映射的 Automapper 无法正常工作

全部。例如我们有这样简单的类

我们有一些配置代码

和测试数据初始化

我希望看到

是否可以像最初一样将内部集合的 Id 设置为等于 5?

0 投票
1 回答
1424 浏览

c# - 带有 IDataReader 到 List 的 AutoMapper 始终返回 0 个计数

AutoMapper在我的应用程序中使用最新版本的。我想将DataTable对象转换为List类型,我正在使用以下代码阅读器的类型DataTable

但它总是返回 0 计数,我的DataTable列名也与AutoShiftReportConfigDto' 的属性类型和名称相同

0 投票
0 回答
540 浏览

automapper - 使用 WebApiRequestLifestyle 的 Automapper 和 SimpleInjector

我将 Automapper(来自 Nuget 的最新版本)插入我的项目(WebApi2,框架 4.5.1)并使用 SimpleInjector(来自 Nuget 的最新版本)。

我的问题是在使用 Automapper 之前一切正常。现在我不确定为什么它告诉我缺少反向映射(当我知道调用的服务不需要它时)。

我正在使用 IMappingEngine 接口。

我有一个包含所有 Mapper.CreateMap 的 AutoMapperConfig 类

AutoMapperConfig 示例

AutoMapperConfig.Configure 接收 IMappingEngine 的原因是某些映射属性内部有其他映射。例如(代码片段):( 注意 Mapper.CreateMap 中的 Mapper.Map)

Global.asax(方法 Application_Start())中,我正在调用:

在我使用的 SimpleInjector注册中:

然后每个Controller接收一个 IMappingEngine 并使用:

有什么遗漏或错误吗?

提前致谢!吉列尔莫。