问题标签 [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.

0 投票
2 回答
27953 浏览

c# - 使用 AutoMapper 将对象的属性映射到字符串

我有以下模型:

我希望能够使用 AutoMapper 将类型的Name属性映射Tag到我的一个视图模型中的字符串属性。

我创建了一个自定义解析器来尝试处理此映射,使用以下代码:

我正在使用以下代码进行映射:

当我运行应用程序时,我收到错误:

成员的自定义配置仅支持类型上的顶级个人成员。

我究竟做错了什么?

0 投票
1 回答
1890 浏览

c# - Automapper 模型 > ViewModel 映射异常

我有以下模型和视图模型(为简洁而编辑):

我有以下 AutoMapper 映射:

然后我的控制器方法之一执行以下操作,以检索 Adverts 列表(其中每个 Advert 可能具有任意数量的 AdvertImages):

然后我尝试将这些广告映射到我的ListAdvertViewModelViewModel 类中

如果返回的广告之一(在“广告”变量中)有一些要映射的图像,这就会失败。我得到的错误是:

我不明白为什么这个 AdvertImage 映射会导致问题?

0 投票
2 回答
2786 浏览

asp.net-mvc - Automapper with NHibernate - 如何持久化映射对象?

我有一个使用 Fluent NHibernate 和 AutoMapper 的 ASP.NET MVC 应用程序。我主要使用 AutoMapper 将我的模型映射到 ViewModel,反之亦然。

在执行后者时,从我的视图模型映射回模型,我想知道如何将其映射到数据库中的特定实例,所以当我将更改提交回数据库时(使用我的 NHibernate 存储库层,通过我的服务层),更改将保持不变。

例子:

如果我尝试提交我的 NHibernate 会话,以便在数据库中更新这个广告,尽管广告被分配了正确的 Key/Id 作为映射的一部分,我猜是因为 NHibernate 会话对这个广告实例一无所知(?)它不会写掉更改。

因此,我想知道如何与 NHibernate 一起处理这种映射场景?

0 投票
2 回答
3520 浏览

c# - 使用键将列表映射到 Automapper 中的现有列表

Automapper 可以轻松处理将一个对象类型列表映射到另一个不同对象类型列表,但是是否可以使用 ID 作为键将其映射到现有列表?

0 投票
6 回答
15356 浏览

c# - 使用 Automapper 导致堆栈溢出的循环引用

我正在使用 Automapper 将我的 NHibernate 代理对象 (DTO) 映射到我的 CSLA 业务对象

我正在使用 Fluent NHibernate 创建映射 - 这工作正常

我遇到的问题是Order有一个集合,OrderLines其中每个都有对Order.

和:

这些 DTO 对象分别映射到OrderCSLAOrderLines对象

当自动映射到OrderLines列表时OrderLinesDTO被映射。然后自动映射器将"Order"属性映射到行上,这些行映射回Order然后循环映射回OrderLine,然后再映射到Order等等

有谁知道 Automapper 是否可以避免这种循环引用?

0 投票
2 回答
2627 浏览

c# - AutoMapper - 嵌套映射,同时保留选定的子属性

所以我有这个;

然后我这样做;

然后我的期望是它dest.ChildProperty.OtherChildProperty仍然设置为从数据上下文中提取时的状态。但是我正在努力做到这一点。

如果我CreateMap是这样,那么我会得到一个“必须解决到顶级成员”的异常;

但是,如果我执行以下操作,则new Child {}替换Child从数据上下文中提取的内容基本上是清除OtherChildProperty

我如何映射它并保留我希望忽略的子属性?

0 投票
1 回答
4267 浏览

c# - 如果不是 Null,则 AutoMapper 映射嵌套对象的属性

我有以下示例对象..

使用以下 AutoMapper 配置

以及以下 NUnit 测试...

上面的测试在断言年龄时失败,因为 AutoMapper 正在将 null 推送到目标对象。

我是否对 AutoMapper 期望过高,或者我错过了一些重要的地图配置步骤。

最终目标是通过 MVC 操作将一个非常复杂的域对象绑定到传入的表单数据。然后,AutoMapper 将用于仅将非空属性(在对象图的所有深度)合并到整个多步骤表单中维护的真实实例中。

以防万一有人需要知道...我还尝试了以下映射配置,但没有任何运气:(

0 投票
0 回答
779 浏览

ninject - Ninject 和 AutoMapper

我正在为一个内部演示拼凑一些代码,该演示由基于 Caliburn.Micro 构建的 Silverlight 5.0 UI 组成。

摘要场景: 我试图让 AutoMapper 映射来自服务代理类的视图模型列表。视图模型具有 ctor 依赖关系,所以我想使用 Ninject 来解决这个问题。

详细信息: 我有一个调用服务的父视图模型 (AvailableItemsViewModel)。然后,它使用 AutoMapper 将返回的 DTO 列表映射到 AvailableItemViewModel。

AvailableItemViewModel 引用了 Caliburn 的 IEventAggregator - 因为视图模型将根据用户输入发布事件。

我读了:

使用 Ninject 注入 AutoMapper 依赖项

带有 Ninject 混淆的 AutoMapper

如何配置 Automapper 以注入 Ninject 2.0?

所有这些看起来都非常相似......所以我在我的 Bootstrap 类中得到了以下内容:

如果我在引导程序中设置断点,我会看到 Ninject 可以成功创建 AvailableItemViewModel 的实例。

错误是:

{System.ArgumentException:类型“Caliburn.Proto.ViewModels.AvailableItemViewModel”在 AutoMapper.DelegateFactory 的 System.Linq.Expressions.Expression.New(Type type) 处没有默认构造函数。<>c__DisplayClass1.b__0(Type t) at TvdP.Collections.ConcurrentDictionary2.GetOrAdd(TKey key, Func2 valueFactory) 在 AutoMapper.DelegateFactory.CreateCtor(Type type) 在 AutoMapper.Mappers.ObjectCreator.CreateObject(Type type) 在 AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.CreateObject(ResolutionContext context) 在 AutoMapper.Mappers.TypeMapObjectMapperRegistry.NewObjectPropertyMappingStrategy.GetMappedObject( ResolutionContext context, IMappingEngineRunner mapper) at AutoMapper.Mappers.TypeMapObjectMapperRegistry.PropertyMappingStrategy.Map(ResolutionContext context, IMappingEngineRunner mapper) at AutoMapper.Mappers.TypeMapper.Map(ResolutionContext context, IMappingEngineRunner mapper) at AutoMapper.MappingEngine.AutoMapper.IMappingEngineRunner.Map(ResolutionContext语境)}

所以 Ninject 没有被使用?

进行映射的代码是:

我错过了什么?

(AutoMapper 是 2.1.267.0,Ninject 是 3.0.0.0。我也在使用 Ninject.Conventions)

[更新] 我注意到AutoMapper with Ninject帖子中的“解决方法”也适用于我。

[更新] 鉴于此: Mapper.CreateMap().ConstructUsingServiceLocator();

如果我删除 ConstructUsingServiceLocator() 方法,那么 Kernel.Get 上的断点:

不触发。所以看起来两者都是必需的?

0 投票
5 回答
21082 浏览

automapper - Automapper 表达式必须解析为顶级成员

我正在使用自动映射器来映射源对象和目标对象。当我映射它们时,我得到以下错误。

表达式必须解析为顶级成员。参数名称:lambdaExpression

我无法解决问题。

我的源和目标对象是:

我必须Source.CarsDestination.OutputData.Cars对象映射。你能帮我解决这个问题吗?

0 投票
1 回答
414 浏览

.net - 目标上的未映射字段设置为空

我正在使用 Automapper 来映射两个对象。

我在目的地有字段 VehicleModel 有一些默认值。我在源中没有此目标字段的映射。所以我没有映射它。映射完成后,我的默认值在目的地设置为空值。数据对象如下所示。

Source 和 OutputData 之间的映射。

如何避免这种行为。

提前致谢。桑迪普