问题标签 [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.
c# - 无法将服务层实体映射到域模型实体
我正在尝试使用一个来获取一些数据GetData
。这个业务方法是通过这个 Action 方法中的一个服务层从控制器调用的:
我收到此错误:
无法将类型“
System.Collections.Generic.List<BusinessService.Report.MeanData>
”隐式转换为“DomainModels.Reports.MeanData
”
一位同事建议为此使用 Automapper,所以我根据对他有用的方法更改了这样的 Action 方法:
我收到此错误:
AutoMapper.Mapper.Map<DomainModels.Reports.MeanData,BusinessService.Report.MeanData>
' (DomainModels.Reports.MeanData)'的最佳重载方法匹配有一些无效参数
DomainModel 实体:
可以在生成的 BusinessService 实体中找到reference.cs
与 DomainModel 实体同名的属性。
在这两种情况下我做错了什么?
c# - AutoMapper 包含自定义列表的所有属性
当我将 A 映射到 B 时,除 CustomCollection 中的 X 和 Z 之外,所有属性都被正确映射。
CustomCollection 正确获取了 SomeObject 的初始化列表,并且 SomeObject.Name 也正确映射。
只有我在集合中声明的自定义属性 X、Z 不会被映射。
我究竟做错了什么?
我发现的唯一方法是像下面那样进行映射后,但是它有点违背了使用 automapper 的目的,并且每次我向 CustomCollection 添加新属性时它都会中断。
asp.net-mvc - 自动映射器:int?当有源值时被映射为 null
我创建了以下地图:
在这张地图中,有一些属性是“int?” (可为空的外键),例如 IDSUPERVISOR。
为了应用映射,我使用以下句子:
- 如果源具有值 (5) 而目标没有值 (null),则将值应用于目标 (5)。
- 如果源具有值 (6) 而目标具有另一个值 (5),则该值将正确应用于目标 (6)。
- 但是,如果两者具有相同的值(不修改值),则destination 中的属性映射到NULL,这是错误的!
这是一个错误还是我遗漏了什么?
编辑:我已经能够在一个简单的项目中隔离问题。我在 GitHub 中创建了一个存储库:https ://github.com/farlop/TestAutomapper 。它包括用于创建数据库模式和示例数据的代码和 SQL 脚本。要对其进行测试,只需编辑 IDSUPERVISOR 列中具有值的记录,然后保存而不更改任何数据。您可以看到值在不应该更新为 null 的情况下如何更新
automapper - 如何从一个对象的属性映射到另一个对象的构造函数参数?
想象一下这样的类:
我想配置从Source
到的映射Destination
。我希望 AutoMapper 自动匹配Source.Name
到Destination
的name
构造函数参数,因为它们具有相同的名称(不包括命名约定)和类型。但是,第二个构造函数参数需要自定义映射。
到目前为止,我能找到的最好的方法就是手动进行所有映射:
但是,通过这样做,我失去了基于约定的映射提供的可维护性改进。
c# - Automapper 和引用父对象的对象集合
如果我用一个(虚构的)例子来解释这一点,这可能是最简单的。
我有一个包含 Order 对象的 nHibernate 模型。此 Order 对象包含 OrderItem nHibernate 对象的集合。
我有一个 Order ViewModel,其中包含 OrderItemDto 的集合(实际上只是 POCO)。
在我的 UI 中,我显示了一个订单对象和一个 OrderItems 列表,它们在列表中是可编辑的。模型绑定负责填充 OrderViewModel 和 OrderItemDto 集合。
这是我的模型
这是我的视图模型/dto
我的问题是如何将 OrderItemDto 的集合映射到附加到订单的 OrderItem 对象的集合。我想控制 orderItem 对象的生命周期。IE,如果 OrderItemDto 有一个 Id,我想从存储库中获取 orderItem。如果它不存在,我想创建一个新的并将其订单属性设置为父订单。
这是我认为我想要的伪代码:
但显然这不起作用,因为 IValueResolver 不是这样工作的。
这个How to assign parent reference to a property in a child with AutoMapper有点类似,但如果 OrderItems 已经存在,则不允许我从存储库中获取它们。
谢谢,戴夫
automapper - Automapper ReverseMap 不会自动映射接口
我创建了一个简单的测试用例来重现我的问题。给定以下两个接口
以及下面的映射代码和测试
我得到了这个例外。
我错过了一些明显的东西吗?据我了解,只要名称相同,CreateMap 就会自动为您的属性创建映射。
从接口映射到接口时,自动映射不起作用吗?
c# - Automapper - 未正确从源对象复制到目标对象。错误需要默认构造函数
当我将源对象映射到现有实例时,它似乎想要创建一个新对象而不是复制到...
这是我的测试场景:
我收到此错误:类型“Raven.Lib.Domain.CRM.Models.CustomerProxy”没有默认构造函数
客户群:
现在如果我创建一个空的默认构造函数
它没有错误,但似乎清除了我的旧实例就是证明。
映射忽略我不想覆盖的属性。
之前: 之后:
我是否错误地使用了自动映射器?domainCustomers = Mapper.Map(customers, domainCustomers);
小背景:我正在使用虚拟代理模式来延迟加载我的联系人、部门和组,因为它们是非常大的列表。这就是我从基类 Customer 继承的原因。
linq - Automapper 与 linq 如何?
好的,我真的很难找到一个很好的例子来说明我需要做什么。所以,我会在这里问。
假设我有一个名为 Customer 的实体类 (EF) 和一个名为 CustomerViewModel 的相应视图模型类。
使用 AutoMapper,我创建了以下映射:
我将如何修改以下代码以使用此映射?
提前致谢。
c# - 使用 AutoMapper 映射子集合
我正在使用 Automapper 制作对象的副本
我的域可以简化为以下示例
考虑我有Store
一个集合Location
下面是一个商店实例的例子
我的映射配置为
我得到映射的实例
我从映射中获得的目标对象有一个 Locations 集合,在源中存在相同的两个实例,即
Object.ReferenceEquals(source.Locations[0], destination.Locations[0])
返回TRUE
我的问题是
如何配置 Automapper 在映射时创建新的 Location 实例。
c# - 使用 ForSourceMember 时 AutoMapper 的 Ignore() 不起作用?
我试图忽略源类型的属性。我已经定义了这样的映射:
当我调用 Map 函数时,
目的地的属性无论如何都会更新。我正在使用从 NuGet 下载的最新稳定版本。
任何想法为什么这不起作用?
我发现了与此类似的问题,但没有附加答案。[问题]:AutoMapper 的 Ignore() 不起作用?