问题标签 [automapper-6]

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 回答
1103 浏览

asp.net-core - Automapper 和 EF 导航属性

使用 ASP.NET MVC Core 和 Entity Framework Core,我正在尝试创建一个简单的网站。

我已经定义了我的模型:

以及相应的视图模型:

我已经使用相应的映射器定义了一个 Automapper 配置文件:

我尝试加载一个Club实体,其中包含导航属性Teams( _context.Club.Include(c => c.Teams).ToList())。这按预期工作,它返回一个带有团队列表的俱乐部。但是当我尝试将此实例映射到 ClubViewModel 时,我收到502.3 错误,并且我的调试会话立即结束。

好像我错过了一些微不足道的东西,但我根本看不到它。Windows 事件日志中没有任何信息,我在 IIS Express 日志记录中找不到任何有用的信息 (%userprofile%\documents\IISExpress)

是什么导致了崩溃?

0 投票
0 回答
1177 浏览

c# - AutoMapper not calling AfterMap when mapping a dynamic proxy

Let's say I've designed a class A and also I've designed a DTO class called Dto.

If A is a dynamic proxy generated with Castle DynamicProxy, AutoMapper won't fire AfterMap:

In the other hand, if I run the following code, AfterMap will be called:

Also, MappingConfiguration is configured to automatically register types:

Currently I'm using AutoMapper 6.0.2. I can't figure out why this isn't working.

Update

After some trial-errors, It started to work once I commented out config.CreateMisstingTypeMaps or I set it to false.

I suspect that AutoMapper is creating a map between the DTO and AProxy (which is a type generated during run-time) and prioritizes that mapping over the Dto and A as is.

Thus, how may I configure AutoMapper to both create missing type maps and also support my scenario?

0 投票
1 回答
603 浏览

c# - AutoMapper:类属性,映射 ISet to HashSet

I have defined a mapping to/from my DTO object, the properties on one versus the other match excatly except that the DTO Object has collections defined as ISet and the non DTO object has

I have defined a mapping to/from my DTO object, the properties on one versus the other match excatly except that the DTO Object has collections defined as ISet and the non DTO object has those collectiond defined as HashSet . I've noticed a significant performance hit mapping from DTO -> Non DTO, vs the other way.

AutoMapper seems to have trouble going from Interface from concrete class, I'm wondering if I'm missing something in a mapping, or configuration somewhere to be more explicit. This paradigm exists across our code base, but for my object in question I can map 2k objects from the DTO in about 8 seconds, and I can map the exact same objects to the DTO in about .1 seconds

Mapping:


We found that upgrading Automapper (to version 6.0.2) would be the way to go in our case. Using the updated AutoMapper and the same objects and mappings listed above we saw the ExampleDTO->Example object mapped in 1.57 seconds, and the reverse case mapped in 1.86 seconds. I'm not overly happy posting an answer that says use the upgrade, so I'll post a few options that gave some modest gains, and if anyone else has an actual answer, I'll gladly mark that one.

I tried creating a mapping for the ISet HashSet and this was about twice as fast as without that specified mapping, I cannot remember exactly what I did here, but I found it on the googles.

The other option I tried, was creating Non Mappable HashSets on the DTO object that simply returned the ISet. This was about 3x faster, but still not close to the performance gained by upgrading.

and I used the following mapping

0 投票
1 回答
107 浏览

c# - AutoMapper 小类到带有验证的大类

我有一个包含 30 多个属性的大类,我需要从一个包含大约 6 个属性的小类映射到它,这些属性应该自动映射(同名,相同类型)。我不想在映射配置中维护 24 个以上的 .Ignore() 列表,但我确实希望能够针对我的所有其余映射运行 AutoMapper 的验证例程;不过,我并不特别关心这个映射是否经过验证。

我已经尝试过 ReverseMap 和一些 Ignore* 方法来看看哪些方法可行。我认为 ReverseMap 会是诀窍,但要么我用错了,要么它没有做我理解的事情。它似乎没有很好的记录。

为了清楚起见:

谢谢!

0 投票
1 回答
114 浏览

.net - AutoMapper 产生异常

我在 .NET EF 项目中使用 AutoMapper 6.0.2,但我似乎无法让 AutoMapper 工作。

在使用 AutoMapper 4.xx 的教程中使用了:

我在下面尝试过,但是以后使用 Mapper.Map 时总是会出现异常。

0 投票
3 回答
1620 浏览

c# - 使用 AutoMapper 进行集成测试无法初始化配置

框架和包

集成测试

启动.cs

问题
调用控制器方法后集成测试失败:

它失败是因为 AutoMapper 尚未初始化。我理解这一点的方式是,既然TestServerUseStartup方法,它应该使用apiStartup.cs类中配置的所有服务(UseContentRoot指向我的api项目根)

这显然没有发生。有人可以告诉我如何配置,TestServer以便正确选择 AutoMapper 配置吗?

0 投票
1 回答
453 浏览

automapper-6 - 避免重复的 CreateMap使用配置文件时调用?

我们使用 AutoMapper Profiles 来保持我们的映射分散。这很好用,但是当有重复的 CreateMap 调用时,我们有时会遇到一些难以调试的问题。有没有办法防止这种情况?这似乎应该由框架原生支持,以减少难以发现的错误。

我遇到了这篇描述我正在寻找的东西的帖子,但我认为它从未实现过。

0 投票
1 回答
441 浏览

asp.net-mvc-5 - AutoMapper 6 - 如何创建忽略并映射对象列表的映射

我是 AutoMapper 的一个小新手,我在 Stackoverflow 和 Github 上几乎找不到关于 v6.0 的信息。我需要这个问题的帮助

我有这两个实体:

还有他的 ViewModel:

以及 DocFinanceiro 和 DocFinanceiroViewModel 之间的映射:

当我仅设置其中一个属性时,此映射有效

.ForMember(x => x.ValorPago, y => y.Ignore())

或者

.MaxDepth(1).PreserveReferences();

,但是当我尝试两个导致异常时。我到处搜索,但没有成功。

以及我进行映射的控制器:

对不起,如果犯了一些错误,但我不知道该怎么办......

0 投票
1 回答
1070 浏览

c# - AutoMapper Ignore 不处理实体更新

我知道这个问题在另一个线程中得到了回答。我尝试了建议的方法,但仍然无法正常工作。

这是我的实体和模型映射...

子金额的映射

而且我试图忽略实体中的 PK 和 FK,使其不被模型中的内容更新。

在服务层-实体从 Db 加载数据,然后调用映射器以更新除 FK 和 PK 之外的所有属性,如下所示。

令我惊讶的是,Amount.Id 和 Amount.ItemId 总是在子 Amounts 上更新为 0。缺少任何明显的东西吗?

PS:实体实例“doc”不是代理,所以不是代理可能导致不正确的映射。

0 投票
1 回答
423 浏览

c# - 使用自动映射器映射客户列表

使用 Automapper 我试图将一个对象映射到另一个对象。一个属性是一个名为 Task 的类,其中包含一个客户列表。另一个类称为 Result 并包含客户计数以及另一个客户列表。

这是我目前的方法,可以正确地将信息填充到订单属性中,但结果失败,结果仍然为空。我怎样才能把列表变成结果?我需要如何更改地图,我是否需要在两个方向上创建地图,或者这没有必要?

这是我目前的课程(客户):

客户邮局: