问题标签 [automapper-5]

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

c# - Automapper 5.2 如果在 Base DTO 映射中配置,则忽略 ExplicitExpansion

如果在基本数据传输对象的映射中配置了 ExplicitExpansion() 配置,Automapper 5.2(目前最新)将忽略它。但是如果直接在 Derived DTO 中配置映射,它仍然可以正常工作。我有一对 DTO 类,它们在字段集和映射配置中包含如此多的重复项,我试图将其隔离到公共基础 DTO 类,但是这个问题阻止了我这样做。

下面是说明这种奇怪行为的代码。有四个测试,其中两个在断言基础 DTO 的未扩展属性时失败。如果我将 1-1..1-4 行移动到 2.1,则所有测试都通过。

我是否错过了一些代码,或者这是 Automapper 中的错误,我必须将此问题报告给 Automapper 的错误跟踪器?或者它可能是“设计使然”,但为什么呢?(Ivan Stoev 提出了一个可行的修复,但请让我推迟接受答案,因为我面临的问题不是那么简单,我在下面的更新中添加了更多细节)。

单元测试1.cs

包.config:

升级版。Ivan Stoev 全面回答了如何解决上面编码的问题。它工作得很好,除非我被迫使用字段名称的字符串数组而不是 MemberExpressions。这与这种方法与 Value 类型(例如 int、int?)的成员崩溃有关。它在下面的第一个单元测试中与崩溃堆栈跟踪一起演示。我将在另一个问题中询问它,或者更确切地说在错误跟踪器中创建一个问题,因为崩溃绝对是一个错误。

UnitTest2.cs - 来自 Ivan Stoev's answer 的修复

UPD2。上面更新的问题绝对不能在外面解决,请参阅已接受答案下的评论。这是 AutoMapper 本身的问题。如果您迫不及待地修复更新的问题,您可以使用以下简单(但不是次要)差异制作 AutoMapper 补丁:https ://github.com/moudrick/AutoMapper/commit/65005429609bb568a9373d7f3ae0a535833a1729

0 投票
2 回答
10294 浏览

c# - 映射器未初始化,使用 ProjectTo() 时

我在我的项目中使用Automapper 5.2.0 。当我ProjectTo()在代码中使用时出现此错误:

映射器未初始化。使用适当的配置调用初始化。如果您尝试通过容器或其他方式使用映射器实例,请确保您没有对静态 Mapper.Map 方法的任何调用,并且如果您使用 ProjectTo 或 UseAsDataSource 扩展方法,请确保传入适当的 IConfigurationProvider实例。

服务代码

自动映射器配置文件

我也将StructureMap用于IoC

AutoMapper注册表

我看到其他问题问题但没有解决我的问题。

0 投票
1 回答
5143 浏览

c# - Automapper - 如何从源子对象映射到目标

我正在尝试从源的子对象映射到目标(作为父对象)。

源型号:

对于我的示例,我使用 T 为 SourceAssignment 类型

目标对象

我想将源模型直接映射到目标。所以,我试图使用

这不起作用,因为我在上面的行中遇到运行时错误,即“仅支持类型上的顶级个人成员”。

所以,根据这个线程我尝试了以下

现在,我在应该发生映射的地方遇到错误,上面写着“映射器未初始化。使用适当的配置调用初始化。如果您尝试通过容器或其他方式使用映射器实例,请确保您没有对静态映射器的任何调用。 Map 方法,如果您使用 ProjectTo 或 UseAsDataSource 扩展方法,请确保传入适当的 IConfigurationProvider 实例。”

我可以为每个属性使用 ForMember 并将其从 src.Attributes 映射到 dest(例如:src.Attribute.Id 到 dest.Id)。这行得通,但我真的不想这样做,因为我的 Source 是涉及嵌套子级的复杂类(因为这是一个 Web API 响应,我无法控制它)。所以这里做了很多自定义映射

关于如何进行的任何建议。

0 投票
1 回答
1032 浏览

c# - 使用 Automapper 在动态列表和类列表之间进行字段到字段映射

我有下面的函数,它返回一个动态对象列表

还有一堂课

我使用 AutoMapper.5.2.0。我想将动态列表与testclass类的列表映射。谁能举例说明如何做到这一点?

0 投票
1 回答
308 浏览

entity-framework-6 - AutoMapper 5 当设置 CreateMissingTypeMaps true ForMember 不起作用

我想我找到了问题的原因,但不知道如何解决,场景是这样的:

我使用了 automapper 5.2,Entity Framework 6 并CreateMissingTypeMaps=true用来保存我的 CreateMap 代码,我也有特殊的地图,所以像这样初始化代码

和地图代码

我得到dest所有属性为空,当我a.CreateMissingTypeMaps = true;在初始化中删除时,它是工作,dest所有属性都可以映射。

然后我发现source类型是System.Data.Entity.DynamicProxies.query_template_80DE6B32EB08D5DFDD560580BB004DAD6A7FF27B94A3517A6BB4044B01FB8272,所以我想当我设置 CreateMissingTypeMaps 时,autoMapper 会自动创建地图,而不是我的创建

建议了很多帖子context.Configuration.ProxyCreationEnabled = false;,但我使用 LazyLoad。并且不想删除 CreateMissingTypeMaps ,因为我有很多普通类型要映射。

任何人都可以帮助我吗?

0 投票
1 回答
402 浏览

c# - AutoMapper 映射接口和忽略列

我有以下代码:

接口

对象

我的目标是使用 Automapper 从 LoanApplication 的两个版本之间复制公共属性。我有以下工作:

这会正确复制所有列,但我仍然必须手动更新被忽略的属性。

ID 的类型不同,所以我总是想忽略。但想知道我如何映射 LoanApplicationStatus、BusinessBorrowers 和 LoanApplicationDebts。我没有发布这些定义来减少空间,但就像 LoanApplicaiton 一样,App1 版本使用 Guid 而 App2 使用 Int 作为 Ids。每个版本共享相同的基类,但添加了一些不同的列。

0 投票
0 回答
410 浏览

asp.net-web-api - 扩展包含嵌套导航属性的导航属性时出错

我正在使用 Web API 构建 OData 服务。数据库访问是通过实体框架处理的。

我正在使用 AutoMapper 将我的 EF 实体映射到另一组类。这些映射的类是通过 OData 服务公开的。

我有一个看起来像这样的模型:

我的 OData 端点公开了一个IQueryable<Assignment>. 一切都适用于简单的 OData 查询(、、、$top$select$filter。默认情况下,Assignment.Employee不从服务返回;我对此很好。

当我尝试$expandEmployee 时,我收到此错误:

[...]实际上并不是错误的一部分,只是我删除的消息的一部分。

在这一点上,我还没有要求Skills,我的期望是Employee.Skills不会扩大,因为我没有明确要求扩大它。我不确定与之Skills相比的是什么让 EF 被淘汰。

我能说的最好的一点是,OData 在我应用的任何投影之上应用了一个额外的投影,而 EF 遇到的问题就是这个投影。

有没有人使用 OData/EF 来导航具有不止一层深度的属性的经验/成功?

我曾尝试删除 AutoMapper 并手动编写表达式,但我仍然遇到同样的错误,所以我不相信 AutoMapper 在这里造成任何问题。

0 投票
1 回答
5632 浏览

c# - AutoMapper 5 自定义值解析器“无法将表达式类型 X 转换为返回类型 Y”

我从旧版本的 AutoMapper 升级并转换了我的自定义解析器,但我遇到了困难。

Product 有一个int? ModelId属性,ProductViewModel 有一个string Name属性。

自定义解析器

编译错误:

我究竟做错了什么?我怀疑我误解了新的自定义解析器界面。

0 投票
1 回答
387 浏览

c# - 通过 ConstructServicesUsing 引导 AutoMapper 和 StructureMap

如何告诉 AutoMapper 5 使用 StructureMap 构建服务而不产生引导问题,即new MapperConfiguration(cfg => cfg.ConstructServicesUsing(some_IContainer))当通过 StructureMap 进行配置时?

自定义解析器需要 AutoMapper 使用的服务定位器,但IContainer在 AutoMapper 在 StructureMap 注册表中初始化时还不存在。静态ObjectFactory.Container在 StructureMap 中已被弃用,所以我有一个惰性 ObjectFactory:

我无法ObjectFactory.Container从 AutoMapper 配置文件中引用,因为我得到堆栈溢出或“在惰性工厂中引用的值”。

.ConstructUsing(some_IContainer)配置 AutoMapper 后有什么办法吗?

0 投票
1 回答
811 浏览

c# - 如何使用 Automapper 5?

我是 Automapper 的新手。通过下面的链接,我正在尝试理解它。

我正在使用它的 Automapper v 5.2.0

这是我的东西。 https://codepaste.net/xph2oa

错误 - 无法将类型 System.Collections.Generic.List' 隐式转换为 'System.Collections.Generic.IEnumerable'。存在显式转换(您是否缺少演员表?)

我如何映射List<Customer>List<CustomerTO>

请注意,在Customer我的属性类型string为 nameCustname时,CustomerTO我的属性名称CustData为 type object。那么如何映射这个不同的名称属性呢?

谢谢。