问题标签 [automapper-4]
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 - 尝试映射到奇怪的类型
我有一个非常具体的用例。我有使用 EF6.1.3 生成的实体
我还有一个存储库类,它读取生成的实体类型。在下一层(服务)中,我使用存储库和 AutoMapper 将实体映射到所需的类型。例如,我在 MarketServices 类中有一个 read 方法
使用适当的映射配置,这可以完美地工作。现在,在另一项服务中,我需要使用 MarketServices(多对多关系),因为我想将新公司添加到现有市场的子集。事情从这里开始变得激烈,没有隐藏的细节,我将展示一切:CompanyServices.Create:
错误出现在marketsProvider.Read 行。是的,那将是源类型和目标类型完全相同。如果我选择使用我定义的不同映射,其他一切都有效。我这样定义这个映射:
所以存储库返回了适当的市场实体,但是当我尝试使用 AutoMapper “传递”它们时,我得到了我见过的最奇怪的(如果我理解你为什么要这样做,我会被诅咒)异常:
映射类型:Market_C126EFB65DDE81A0F02B0BF191A2C8B857DA7226E54AB43FB5DF74D3D3A406ED -> ICollection
1 System.Data.Entity.DynamicProxies.Market_C126EFB65DDE81A0F02B0BF191A2C8B857DA7226E54AB43FB5DF74D3D3A406ED -> System.Collections.Generic.ICollection
1[[MyProject.Data.Activity, MyProject, Version=1.0.0.0, Culture=neutral, PublicKeyToken=null]]目标路径:Market.Activity.Activity
源值:System.Data.Entity.DynamicProxies.Market_C126EFB65DDE81A0F02B0BF191A2C8B857DA7226E54AB43FB5DF74D3D3A406ED
那么这里到底发生了什么?如果映射的源类型和目标类型相同,为什么 Automapper 不返回原始对象?有没有办法实现这种行为?
谢谢!
我最终使用了找到的部分解决方案我可以让 AutoMapper 有时返回相同的对象吗?我改变了我的阅读功能,如下所示:
我只是将其留在这里,以防其他人偶然发现相同的用例。
automapper - 不同级别的 Automapper 映射集合
我有源对象,如下所示,
现在,源对象具有 AddressRelation 集合,在该地址列表中将存在.. 意味着员工将有 0-n AddressRelation,每个 AddressRelation 内部将有 0-n 地址。
现在,我只想映射源对象中的地址,并使用 Automapper 将其分配给目标对象的地址集合。意味着迭代每个地址关系,获取地址并分配给目标对象的地址集合。如何使用 AutoMapper 做到这一点?
在此先感谢,普拉卡什。
c# - 具有动态类型的 AutoMapper:缺少类型映射配置或不支持的映射
答:CreateMissingTypeMaps
必须设置为true
使动态映射工作。
我有 Entity Framework 的包装器来执行对数据库的查询。我想允许用户只选择必需的属性,但保留实体类型的结果。
这是虚拟代码(不使用 EF,但有同样的问题)
得到这个例外:
我有点卡在这里,因为文档指出 AutoMapper 使用属性名称映射回对象:Dynamic 和 ExpandoObject Mapping。
请注意,上面的代码是示例。在我的应用程序中,事情变得有点疯狂,因为我实际上正在使用泛型,例如
...它应该保持这种状态 - 我不知道使用的是什么实体类型。我的期望只是:将属性映射到现有类型,如果缺少,设置default(T)
。
编辑:我试图从 to 指定映射器dynamic
,T
这里几乎是完整的代码:
...这不会因异常而死,但是结果非常空(所有属性都有default
价值。
automapper-4 - 版本 4 中的 GetAllTypeMaps 和 AutoMapper.Impl.PropertyAccessor 在哪里?
尝试从 3.2 升级到 4.2 自动映射器,我需要帮助来确定 GetAllTypeMaps 的移动位置,或者如何进行后续操作。我正在抓取所有地图并找到类型为“Command”而忽略“DateCreated”的地图。这是代码:
我假设现在在 4.2 中可能有更简单的方法可以做到这一点?
c# - 如何使用 Automapper 转换复杂的嵌套对象层次结构
我在两个不同的命名空间下有以下这些类,例如Source
和Target
.
映射类:
请注意,Instance
该类具有Definition
object 类型的属性,该属性将保存Class
引用,因此嵌套层次结构将从这里开始直到 N 级。我转换得很好,但内部的定义属性Class
及其嵌套层次结构对象仍然持有源引用而不是目标。在添加ForMember(t => t.Definition, opt => opt.MapFrom(s => Mapper.Map<Source.Class, Target.Class>((Source.Class)s.Definition)))
以某种方式使这种转换工作之后,它已经开始给出异常。
用法:
请帮助我填补空白或缺失的部分。
c# - Automapper 4.2.1 - 平面模型到抽象基类(TPT 结构)
我在从平面模型映射到抽象基类(TPT 结构)时遇到问题。使用版本 4.2.1 源模型:
目的地型号:
我尝试过的映射
由于抽象类,这个在映射时会出错!
另一个尝试——这个更接近了,但 Destination(ModelA, ModelB, BaseModel) 始终为空
呼叫映射
c# - Automapper -AutoMapper.AutoMapperMappingException
我尝试了 Automapper,它的映射非常简单,但它不起作用。我正在尝试将一种System.Security.Claims.Claim
类型映射到另一种类型的 ClaimItem:
但我总是得到:
AutoMapper.AutoMapperMappingException:缺少类型映射配置或不支持的映射。
映射类型:Claim -> ClaimItem System.Security.Claims.Claim -> CommonAuth.ClaimItem
目标路径:ClaimItem
源值: http: //schemas.xmlsoap.org/ws/2005/05/identity/claims/dateofbirth:05.05.2016
这是我的配置:
c# - AutoMapper:将许多属性映射为一个
场景如下:我收到一条包含很多变量的消息,数百个。我需要将此写入 Azure 表存储,其中分区键是各个变量的名称,并且值被映射到例如值。
假设有效负载如下所示:
我的 TableEntry 是这样的:
为了将其写入表存储,我需要
我不想复制这 900 次(或者在有效负载消息中碰巧有多少变量;这是一个固定的数字)。
我可以创建一个方法来创建表,但我仍然需要调用 900 次。
我想也许 AutoMapper 可以帮忙。
c# - 非静态 AutoMapper 和 ASP.NET MVC
与这个问题类似: 在哪里放置 AutoMapper.CreateMaps?
放置非静态 AutoMapper 初始化的推荐位置在哪里?
存储地图变量的推荐位置在哪里,以便控制器可以访问它?
提前致谢。