问题标签 [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.
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
c# - 映射器未初始化,使用 ProjectTo() 时
我在我的项目中使用Automapper 5.2.0 。当我ProjectTo()
在代码中使用时出现此错误:
映射器未初始化。使用适当的配置调用初始化。如果您尝试通过容器或其他方式使用映射器实例,请确保您没有对静态 Mapper.Map 方法的任何调用,并且如果您使用 ProjectTo 或 UseAsDataSource 扩展方法,请确保传入适当的 IConfigurationProvider实例。
服务代码
自动映射器配置文件
我也将StructureMap用于IoC
AutoMapper注册表
c# - Automapper - 如何从源子对象映射到目标
我正在尝试从源的子对象映射到目标(作为父对象)。
源型号:
对于我的示例,我使用 T 为 SourceAssignment 类型
目标对象
我想将源模型直接映射到目标。所以,我试图使用
这不起作用,因为我在上面的行中遇到运行时错误,即“仅支持类型上的顶级个人成员”。
所以,根据这个线程我尝试了以下
现在,我在应该发生映射的地方遇到错误,上面写着“映射器未初始化。使用适当的配置调用初始化。如果您尝试通过容器或其他方式使用映射器实例,请确保您没有对静态映射器的任何调用。 Map 方法,如果您使用 ProjectTo 或 UseAsDataSource 扩展方法,请确保传入适当的 IConfigurationProvider 实例。”
我可以为每个属性使用 ForMember 并将其从 src.Attributes 映射到 dest(例如:src.Attribute.Id 到 dest.Id)。这行得通,但我真的不想这样做,因为我的 Source 是涉及嵌套子级的复杂类(因为这是一个 Web API 响应,我无法控制它)。所以这里做了很多自定义映射
关于如何进行的任何建议。
c# - 使用 Automapper 在动态列表和类列表之间进行字段到字段映射
我有下面的函数,它返回一个动态对象列表
还有一堂课
我使用 AutoMapper.5.2.0。我想将动态列表与testclass类的列表映射。谁能举例说明如何做到这一点?
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 ,因为我有很多普通类型要映射。
任何人都可以帮助我吗?
c# - AutoMapper 映射接口和忽略列
我有以下代码:
接口
对象
我的目标是使用 Automapper 从 LoanApplication 的两个版本之间复制公共属性。我有以下工作:
这会正确复制所有列,但我仍然必须手动更新被忽略的属性。
ID 的类型不同,所以我总是想忽略。但想知道我如何映射 LoanApplicationStatus、BusinessBorrowers 和 LoanApplicationDebts。我没有发布这些定义来减少空间,但就像 LoanApplicaiton 一样,App1 版本使用 Guid 而 App2 使用 Int 作为 Ids。每个版本共享相同的基类,但添加了一些不同的列。
asp.net-web-api - 扩展包含嵌套导航属性的导航属性时出错
我正在使用 Web API 构建 OData 服务。数据库访问是通过实体框架处理的。
我正在使用 AutoMapper 将我的 EF 实体映射到另一组类。这些映射的类是通过 OData 服务公开的。
我有一个看起来像这样的模型:
我的 OData 端点公开了一个IQueryable<Assignment>
. 一切都适用于简单的 OData 查询(、、、$top
等$select
)$filter
。默认情况下,Assignment.Employee
不从服务返回;我对此很好。
当我尝试$expand
Employee 时,我收到此错误:
[...]
实际上并不是错误的一部分,只是我删除的消息的一部分。
在这一点上,我还没有要求Skills
,我的期望是Employee.Skills
不会扩大,因为我没有明确要求扩大它。我不确定与之Skills
相比的是什么让 EF 被淘汰。
我能说的最好的一点是,OData 在我应用的任何投影之上应用了一个额外的投影,而 EF 遇到的问题就是这个投影。
有没有人使用 OData/EF 来导航具有不止一层深度的属性的经验/成功?
我曾尝试删除 AutoMapper 并手动编写表达式,但我仍然遇到同样的错误,所以我不相信 AutoMapper 在这里造成任何问题。
c# - AutoMapper 5 自定义值解析器“无法将表达式类型 X 转换为返回类型 Y”
我从旧版本的 AutoMapper 升级并转换了我的自定义解析器,但我遇到了困难。
Product 有一个int? ModelId
属性,ProductViewModel 有一个string Name
属性。
自定义解析器
编译错误:
我究竟做错了什么?我怀疑我误解了新的自定义解析器界面。
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 后有什么办法吗?
c# - 如何使用 Automapper 5?
我是 Automapper 的新手。通过下面的链接,我正在尝试理解它。
- http://automapper.org/
- https://lostechies.com/jimmybogard/2016/01/21/removing-the-static-api-from-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
。那么如何映射这个不同的名称属性呢?
谢谢。