问题标签 [automapper-2]
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 和展平嵌套数组
我正在尝试使用 AutoMapper 来展平多个级别的数组。
考虑以下源类:
以及以下目的地:
我想做的是从一个或多个 X 中获取一个列表,例如:
我无法弄清楚要使用哪种映射配置来实现这一点。MapFrom 似乎是 1:1 组合的方式,但似乎无法处理数组(或其他可枚举),除非我使用 AutoMapper 的目标命名约定。
关于如何实现这一目标的任何见解?
c# - 这是 AutoMapper 2.0.0 和 2.2.0 之间的重大变化吗?
我今天从 AutoMapper 2.0.0 更新到 2.2.0 并意识到更新破坏了一些代码。在作为问题发布在 automapper github 站点上之前,想在这里询问一下。
我的目标类型之一初始化集合属性,如下所示:
使用 automapper 2.0.0,这很好。当我更新到 2.2.0 时,映射到此目标类型会导致 NotSupportedException 并显示消息“集合具有固定大小”。(该异常被包装在 AutoMapperMappingException 中。)
我可以通过将上面的构造函数代码更改为此来解决这个问题:
似乎 AutoMapper 2.0.0 正在丢弃 Items 属性中的任何值并使用set
属性访问器,而 AutoMapper 2.2.0 只是使用get
属性访问器并尝试修改现有的 IEnumerable。看起来Enumerable.Empty<TModel>()
只是替换一个长度为零的数组,这可以解释异常。
这是一个错误吗?AutoMapper 在 2.0.0 和 2.2.0 之间发生了什么变化,会导致它忽略目标属性设置器,而是尝试修改现有集合?
更新:
根据要求,这里是 CreateMap 调用:
该类PageOfEstablishmentApiModel
继承自PageOf<EstablishmentApiModel>
.
这是 Mapper.Map 代码:
如果 AutoMapper 从 2.0.0 到 2.2.0 需要特殊的映射配置(例如 .ConvertUsing(x => x)),我们可能不得不挂在旧版本上。我一直很喜欢 AM 如何自动转换集合属性,没有它,AM 看起来更像是 ValueInjecter。
automapper - AutoMapperMappingException 映射类型:Double -> Double
当我尝试在我的应用程序中调用 Mapper.Map 时出现以下异常:
除了明显的错误表明它无法映射相同类型的对象(以及原始类型),事实是我从不从类型“Acme.Order”映射到类型“Acme.Address”!
这是正在使用的实际调用:
我的对象模型如下所示:
我在我的应用程序中定义了以下配置:
使用这些辅助方法:
(我在 IDataRecord 上有扩展方法,它们采用字段名称、获取序数并使用标准方法返回值,但为简洁起见不会显示它们。)
这是否能说明导致失败的原因?
(顺便说一句,我正在使用 AutoMapper v2.1.267)
asp.net-mvc - 如何使用 Automapper 正确映射?
我正在开发一个使用来自 Nuget 的 Automapper、工作单元、实体框架 5、ASPNET MVC 4、WebApi 和 Windsor Castle 的应用程序。
我不确定是否应该映射它或者它应该由 Automapper 自动映射
Uow.Stores.GetAll().OrderBy(s => s.Name)
返回一个IOrderedQueryable<Store>
.
我收到错误消息
无法将表达式类型 IOrderedQueryable 转换为类型 IEnumerable
我应该做一个 foreach 并将每个返回的对象转换GetAll
为AutomapperStoreDto
的方法吗?Mapper.Map
Automapper 不会为我转换它吗?
这就是我使用 Automapper 以及注册它的方式。请让我知道是否应该/可以改进。
AutomapperInstaller.cs
:
WebWindsorInstaller
:
Store.cs
:
StoreDto.cs
(现在和商店一样)
这就是我调用安装程序的方式IocConfig.cs
:
我不确定我是否应该包括在内
automapper - 使用 ValueInjector 或 Automapper 时,如何防止“目标”对象中的值被“源”对象的空值覆盖?嵌套映射问题?
我的问题
“源”对象视图中不存在的同一类的属性用空值覆盖“目标”对象中的相同属性。我该如何防止这种情况?影响我如何确保仅填充(非空)属性合并到“目标”对象中。我也用 Automapper 尝试过,但失败了,但我很乐意使用 Automapper 解决方案作为替代方案。
我很欣赏这个“空映射”问题以前出现过,但我担心我的情况会更复杂,因为有嵌套对象。好吧,我尝试了建议的选项,但无法使它们起作用。所以我在这里。
非常感谢任何帮助。
我很欣赏这是一个复杂的问题,并且真的非常感谢任何帮助,特别是如果有人可以为我制作代码示例。这几天我把头发拉出来了:(
我尝试过的
我有 2 个对象,一个是原始对象(“目标”),一个(“源”)由一个表单(即视图)填充。
原始的“目标”对象(myOrigDoc)如下所示:
表单“源”对象(myDoc)如下所示:
然后我做映射:
使用以下注射器:
我最终得到:
表单上没有“DateOfBirth”字段,因此我怀疑模型绑定正在为新的“MyDoc”对象上的“DataOfBirth”属性创建空值,当我调用时:
非常感谢,埃德。
EDIT1:我相信这是由于子类的嵌套映射问题。不确定我如何在 ValueInjector 中对其进行排序。
EDIT2:嵌套映射文档中可能的 Automapper 解决方案,但我无法让它工作。我仍然让我的空值进入目标。:
automapper-2 - 如何从源属性映射到目标?
我发誓我以前做过,但我现在似乎无法让它工作。基本上我得到一个EndUser
包含 a Site
,我想将它映射Site
到一个SiteInfo
对象。
这是我的地图配置:
所以EndUser.Site
应该可以映射到SiteInfo
。我可以通过调用在外面做到这一点Mapper.Map<SiteInfo>(EndUser.Site)
。我认为直接从最终用户映射到位置信息只是更简洁的语法。
那么我怎样才能直接从EndUser
to映射SiteInfo
呢?基本上这是我想写的代码:
目前我正在通过EndUser.Site
这样的映射来解决这个问题:
asp.net-web-api - 映射到两种不同的集合类型时 AutoMapper 抛出异常
我正在编写一个使用 AutoMapper 进行对象映射的 ASP.NET Web API 服务。我正在针对 AbleCommerce 购物车软件构建此服务。有问题的服务(目标)类跟踪用户及其地址。
我的来源是 AbleCommerce 包中的User
和Address
类。我已经包含了祖先类的类声明,因为我相信使用泛型约束可能存在问题,但我并不完全确定。
从 AbleCommerce 类到我的服务类的映射按预期工作。只要我忽略映射配置中不需要的属性,从我的服务类映射到 AbleCommerce 类就可以了。但是,对于 Addresses 属性,我不知道如何解决AddressCollection
AbleCommerceUser
类和List<AddressModel>
我的服务UserModel
类之间的差异(从 AutoMapper 的角度来看)。
当我测试映射配置时,我得到的异常是:
这让我很困惑,因为AddressModel
该类没有名为Addresses
. 我显然错过了一些东西。任何建议、建议或澄清将不胜感激。
c# - 通过 Automapper 将多个序列自动投影到主 ViewModel
我正在尝试使用 Automapper 将一些数据从 SQL 服务器自动投影到我的视图模型中。
我拥有的视图模型是:
我尝试使用的代码是:
两个属性Id
,并且Name
是自动投影的,因为它们在Workstation
类中具有相同的名称。
我在这样的一些代码行上遇到的异常
是一些奇怪object reference is null
的异常,在堆栈跟踪的顶部有一些 automapper 的CreateExpression<>
方法,这给了我一个结论,即 automapper 无法生成一个好的表达式来将其转换为 SQL 代码。
当我使用简单的映射时,比如.Name
从.Category.Name
SQL 表中检索或其他单项检索,它可以完美运行。我只需要在通过 Automapper 投影序列时访问多个项目。
c# - AutoMapper - 继承映射不起作用,相同的源,多个目的地
我可以在 AutoMapper (v2.2) 中为具有相同 Source 类型但不同 Destination 类型的地图使用继承映射吗?
我有这个基本情况(真正的类有更多的属性):
ViewModelA
并且ViewModelB
是同一实体类的不同表示:
我想BaseViewModel
为每个 ViewModel 重用相同的映射,例如:
但不幸的是,这似乎不起作用。像这样的调用:
导致model
已PropertyA
映射,但不是CommonProperty
. 我相信我正确地遵循了https://github.com/AutoMapper/AutoMapper/wiki/Mapping-inheritance中的示例,但我担心使用相同的 Source 类型创建多个地图会使 AutoMapper 出错。
有什么见解吗?我喜欢将基类映射分组在一起的想法,但这似乎不起作用。
asp.net-mvc-3 - 如何在List之间进行映射和一个字符串?
我有一个像这样的模型和视图模型,但 AutoMapper 不会将值从 MyViewModel 传递给 MyModel!
我的模型:
我的视图模型:
助推器:
我必须做些什么才能使映射正常工作?