问题标签 [automapper-3]

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 投票
2 回答
537 浏览

automapper - AutoMapper DataServiceCollection 到列表

我试图使用 AutoMapper 将 DataServiceCollection 映射到字符串列表并创建反向映射。关于如何将这样的专业集合映射到另一个集合的任何想法?

0 投票
2 回答
411 浏览

automapper - 具有下划线属性的自定义约定的通用 Automapper 函数

我只需要将一些自动生成的类从数据库映射到域/视图模型类。自动生成的类可能具有我想与 CustomerId 映射的 customer_id 之类的名称。不知何故,我想用自动映射器注册我自己的约定。我从以下代码开始,但是未填充映射的对象属性:

任何意见将不胜感激。

更新

我发现以下解决方法有效:我只是替换了 used this -> to replace 'underscore' with nothing (Mapper.Initialize(c => c.ReplaceMemberName("_", ""));

0 投票
2 回答
4160 浏览

automapper - Automapper,将单个目标属性映射为多个源属性的串联

我有一种情况,我需要根据某些条件将单个属性映射为多个源属性的组合。

目的地 :

资源:

我想Mapper.Map<EmailViewModel,Email>()

在这里,我想将 my 映射Email.EmailRecipientEmailViewModel.To和的组合EmailViewModel.Cc。但是条件是,To 为Email.EmailRecipient.RecipientEmailTypeId1 , Cc为2

希望我的问题很清楚。

0 投票
0 回答
473 浏览

c# - Automapper 映射类同一个基类的不同类型

我知道这听起来像是重复的,但实际上我找不到有关特定主题的任何信息,因此请在判断之前先阅读它:-)

我想使用 automapper 从我无法控制的相当大的类结构中复制信息。我无法更改接口和类。

首先将此结构视为众所周知的工作模式:来源:

目的地:

InventoryJourney 是 Journey 类的直接继承。由于界面清楚地显示了要创建的类型,Automapper 可以正确处理。目的地将包含 InventoryJourney 类型的对象。

现在我的问题:

提到的 InventoryJourney 类需要填充一个在基类 Journey 中定义的属性,如下所示:

目的地:

资源:

该属性的签名看起来应该包含 Segment 类,但实际上该列表包含类型为 InventorySegment 的类,它是 Segment 类的直接继承。

是否可以通过创建某个派生类型而不是属性定义的基类型来配置 AutoMapper?

我当前的配置如下所示:

0 投票
1 回答
44 浏览

c# - Automapper 聚焦要映射的子对象

我正在尝试将响应对象从 web 服务映射到我项目中的类。我认为 Automapper 甚至会自动映射子对象,除非为成员强制设置,否则它不会。我为什么要这样做?

Mapper.CreateMap<GetIfpQuoteResponse.Quote, QuoteWSModel>() .ForMember(dest => dest.CarrierRate, opt => opt.MapFrom(src => src.Carriers)) .ForMember(dest => dest.DroppedCarriers, opt => opt.MapFrom(src => src.DroppedRates)) .ForMember(dest => dest.MemberPlans, opt => opt.MapFrom(src => src.MemberPlans));

当我提到这样的类映射时,为什么自动映射器不会映射我的子对象

Mapper.CreateMap<GetIfpQuoteResponse.Quote, QuoteWSModel>(); Mapper.CreateMap<GetIfpQuoteResponse.Quote.Carrier, CarrierRateModel>(); Mapper.CreateMap<GetIfpQuoteResponse.Quote.DroppedCarrier, DroppedCarrierModel>();

0 投票
1 回答
2220 浏览

c# - 是否可以告诉 automapper 在运行时忽略映射?

我正在使用 Entity Framework 6 和 Automapper 将实体映射到 dto。

我有这个模型

我使用 automapper Queryable Extension从实体映射 dto。

上述方法的问题是它会使 EF 总是加载地址实体。只有当我明确告诉他们使用 include(x => x.Address) 时,我才希望加载地址。如果我在 automapper 映射中指定 ignore(),则不会加载地址。是否可以告诉自动映射器在运行时忽略地址属性?我正在使用的 Automapper 可查询扩展不支持“条件或映射后”等所有功能。有什么解决方法吗?

0 投票
1 回答
1383 浏览

c# - Automapper 有时无法映射通过 ForMember 设置的属性

我以前从未在 Automapper 遇到过这种奇怪的行为。首先,我使用 Automapper 3.3.0 和 Entity Framework 6.1.3。我有一个通过实体框架检索实体数据的方法。在返回数据之前,它会将其映射到域模型。除了三 (3) 个属性之外,相关属性的名称在实体和域之间匹配,因此您将在我提供的示例代码中看到,在创建地图时只有三 (3) 个 ForMember 调用。

正如我所期望的那样,这在大多数情况下都可以正常工作。但是,偶尔,我无法确定重现的确切步骤,映射成功,但三 (3) 个显式映射的属性除外。

这是我认为相关的代码:

仅供参考, ToList 调用旨在防止来自 EF 的延迟加载问题。

而且,映射器:

如果我做一个 iisreset,一切都很好,它会再次工作。当我在 Visual Studio 2013 中使用调试模式来回切换时,似乎会发生这种情况。就像它只是忘记了如何映射这些属性。传入的实体数据确实总是包含值,顺便说一句,它根本无法将它们三个映射到域。

任何帮助将不胜感激。谢谢!

0 投票
2 回答
1346 浏览

c# - 为什么每次引用源集合时 Automapper 都会将具体集合映射到新实例?

我有一个源对象,其中包含对同一集合的 2 个引用。如果我将源类型映射到结构等效的目标类型,AutoMapper 将在目标实例中创建集合的两个实例。

如果我创建一个SourceThing对同一个列表有两个引用的 a ,将它映射到 a TargetThing,结果是 aTargetThing具有两个单独的集合实例。

这是否意味着 AutoMapper 中具体集合的默认映射行为?通过测试,我意识到如果我映射List<int>List<int>,我实现了我想要的行为,但我不明白为什么。如果 AutoMapper 跟踪引用并且不重新映射映射对象,它不会看到source.MoreNumbers指向与 相同的列表source.Numbers,并相应地设置目标吗?

0 投票
2 回答
364 浏览

c# - automapper 优化映射(模型到视图模型 -> 获取最新版本)

我正在尝试优化这部分代码:

我正在使用自动映射器,我正在尝试优化这部分代码

在这一部分中,我尝试将对象从文档映射到 documentViewModel,在这个复杂的模型中,源数据始终是最新的文档版本:

任何人都可以提供有关如何在这种情况下进行优化的示例或建议吗?

0 投票
3 回答
1402 浏览

c# - KendoGridBinderEx - 类型中不存在属性或字段

我正在使用 AngularJS 和 KendoUI 来创建一个网格,该网格从 WebAPI 网络服务中获取数据。对于网格,我希望允许服务器端排序、分页、过滤和分组。为此,我正在尝试使用KendoGridBinderEx库。

我已经下载了 KendoGridBinderEx 源代码,运行示例项目,它运行良好。但是,当我在项目中执行完全相同的操作时,当我尝试对网格中的列进行过滤时出现以下错误:

System.Linq.Dynamic.ParseException:“MyEntity”类型中不存在属性或字段“test”

“测试”是我在过滤器中输入的内容,所以它应该是过滤器文本;它不应该寻找名为“test”的属性或字段。

我已经调试并使用 Fiddler 看到请求中发送的请求的过滤器部分与示例中的工作请求完全相同,所以我认为问题不在请求端。

对于我所有的代码块,我正在简化所有内容以节省空间,并删除不相关的内容。例如,我正在删除我的数据库代码,并动态生成一个实体列表,因为这样做仍然会出现问题,因此我知道这不是我的实体框架代码的问题。

这是我的 JS 代码:

这是我的 WebAPI 控制器代码:

因此,如果我在“名称”列上设置一个“包含”过滤器,其值为“测试”,则会出现上述错误。关于为什么的任何想法?