问题标签 [automapper-6]

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 投票
1 回答
873 浏览

automapper - 将自动映射器映射到现有对象并使用 nsubstitute 时如何进行单元测试

我正在使用 Automapper 6.2.1 并通过它删除了所有静态变量,而我正在注入IMapper.

我正在使用 NSubstitute 进行模拟。

我有一些代码在其中映射两个现有对象。

我的映射将替换Value2person1.

此后我使用person1修改后的值。

是否可以从我的模拟中“返回”一个不同的 person1 ?如果可能的话,我该怎么做?

编辑

是的,我的问题是如何_mapper正确地模拟我并使用 NSubstitute “返回”不同的 person1 (通过 ref)。

person1 是一个引用对象,这意味着在实际实现中来自 person2 的 Value2 将替换 person1 中的 Value2。但在我的单元测试中,我未能模拟这种情况。

0 投票
1 回答
440 浏览

c# - Automapper:我需要为实体的每个副本调用“CreateMap” - DTO?

我正在使用 Automapper (6.2.1) 转换实体对象的层次结构:

到相应的 DTO 对象层次结构:

我已经像这样映射了所有转换:

每次我创建一个实体和一个 DTO 时,我都需要CreateMap向我的配置文件添加一个新调用。

没有更紧凑的方法可以做到这一点?

0 投票
1 回答
791 浏览

c# - 如何使用 AutoMapper 创建复杂的映射?

我有以下实体模型

然后我有以下视图模型,我想告诉 AutoMapper 将Blog对象映射到属性需要来自的BlogViewModel通知中,并且每个都需要转换为使用有机约定。CategoryNameBlog.Category.NameCommentBlog.CommentsCommentViewModel

我目前在运行时使用反射为任何实现ICustomMap接口的类设置映射。请阅读该Transfer(IMapper mapper)方法的代码中的注释。

最后这是我的CommentViewModel

如何告诉 AutoMapper 如何映射 CategoryName 和 Comments?

更新

这是我将如何创建映射。我将有以下 3 个接口

然后在 Global.cs 文件中

我会Run在启动时执行该方法。基本上,此方法将扫描程序集并注册我想使用接口注册的类。

0 投票
1 回答
108 浏览

c# - 如何触发 AutoMapper 使用 linq 语法映射模型?

我正在尝试使用 AutoMapper 6.3 允许我将模型自动映射到视图模型中。

首先,我像这样注册了我的AutoMapper实例IUnitContainer

现在,在我的控制器中,我想从数据库中提取一个模型,然后我想将它映射/投射到我的视图模型中。

我尝试执行以下操作

但我似乎找不到ProjectTo我认为它将成为AutoMapper项目一部分的扩展。

如果我AutoMapperProfile已经创建了映射,那么投影 viewModel 的正确方法是什么?

0 投票
0 回答
369 浏览

c# - 如何在运行时将变量传递给 AutoMapper 进行动态计算?

我正在尝试使用 AutoMapper 6.3 允许我将模型自动映射到视图模型中。

首先,我IUnitContainer像这样注册了我的 AutoMapper 实例

现在,在我的控制器中,我想从数据库中提取一个模型,然后我想将它映射/投射到我的视图模型中。

我尝试执行以下操作

但是,我的视图模型需要知道当前用户的时区才能将时间从 UTC 转换为本地时区。不知何故,我需要能够传递Passport.User.TimeZone给 ViewModel 才能处理日期时间转换?

这是我尝试投影viewModel的方式

0 投票
0 回答
1225 浏览

c# - 当 ViewModel 中属性的 List 类型为 null 时,AutoMapper 有条件地忽略映射

我的视图模型如下:

实体:

我想将 CarViewModel 映射到 Car Entity 类型,如下所示:

在映射配置中,我想从映射CarViewModelCar. 但是如果引擎count is 0那么映射应该被忽略。

这意味着在更新期间,当我使用GetById. 喜欢

Auto mapper 中是否对此任务有任何扩展。我已经按照上面的方法尝试过,src.Ignore()它也会在此期间忽略ADD

所以,我不想在更新期间映射空值。或者,它应该保留为目标值

编辑:

自动映射器配置:

映射记录:

你可以看看mappedmapped.Engine is Empty

在此处输入图像描述

预期输出:

在此处输入图像描述

0 投票
1 回答
899 浏览

c# - 无法在 AutoMapper 中配置 ReverseMap

我是 AutoMapper 新手。我的映射没有按预期工作,我确定我做错了什么,但无法弄清楚。对不起,如果这个问题令人困惑,但我会尽力澄清。假设我们有三个类:

现在,我想设置我的映射,以便 ContactInfo1 可以映射到 ContactInfo2 和从 ContactInfo2 映射。然后我希望能够映射 Person1 -> ContactInfo2 (这可能看起来很奇怪,但无论如何我都需要这样做)。我尝试了以下映射配置:

对于测试数据:

我执行以下操作:

这不会给我任何错误,但 contactInfo2Test.AnotherName 是空的。请指教!谢谢。

请注意,我意识到我可以去:

然后我会重新映射 Contact1->Contact2,在更复杂的情况下,我真的想避免这种情况。

0 投票
2 回答
466 浏览

automapper - Automapper UseDestinationValue() 或 Ignore() 都将整数目标值设置为 0

首先,有几个类似的问题,我试过到处查看它们,但没有一个起作用。

我有这个映射代码

这是我的目标对象结构。

正在发生的事情是在任何情况下都需要映射现有的Id需求,而不是被目标覆盖,因为实体框架需要更新实体。但是,无论何时发生映射,该Id属性都会被覆盖为零 (0)。我尝试使用opt.Ignore()opt.UseDestinationValue()但没有一个保留Id目标值。

这是个人资料 -

0 投票
0 回答
166 浏览

automapper-6 - 如何使 Automapper 根据字段的值忽略记录

您好我正在尝试使用 Automapper 6 并希望忽略基于字段中特定值的记录。我希望有一种方法可以跳过这样的记录:

有没有办法做到这一点 ?谢谢

0 投票
0 回答
814 浏览

automapper - AutoMapper 内联映射抛出映射器未初始化

我正在尝试在 API 包装类库项目中使用 AutoMapper 从 API 模型映射到我们的域模型。在查看 AutoMapper 文档时,我遇到了内联映射功能

文档说:

AutoMapper 动态创建类型映射(6.2.0 中的新功能)。当您第一次调用 Mapper.Map 时,AutoMapper 将创建类型映射配置并编译映射计划。随后的映射调用将使用已编译的映射。

所以我在我的包装类库中编写了以下代码行:

基本上只是试图将我从 API 获得的 Session 对象映射到我们的 Media 对象中。但这会引发以下错误:

映射器未初始化。使用适当的配置调用初始化。如果您尝试通过容器或其他方式使用映射器实例,请确保您没有对静态 Mapper.Map 方法的任何调用,并且如果您使用 ProjectTo 或 UseAsDataSource 扩展方法,请确保传入适当的 IConfigurationProvider实例。

我的印象是内联映射完全应该绕过必须为 AutoMapper 初始化和定义配置?我错了吗?

另外,如果我确实错了,那么您应该如何在类库中配置和初始化 AutoMapper,使其只发生一次?我希望库是独立的,这意味着我不希望使用库的程序员必须在他的项目中配置 AutoMapper 才能使库正常工作。