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

0 投票
1 回答
1642 浏览

xamarin - Automapper 失去了 pcl 兼容性

我在 PCL 中使用 Automapper 3 年了,一切运行良好。

但是自从版本 4.2.1 以来,当我尝试在 PCL 中安装它时,我收到以下错误:

有什么我想念的新东西吗?

多谢你们

0 投票
1 回答
2168 浏览

automapper - 使用 Automapper 根据源上的值映射到特定的派生类型

在源是应根据源上的值映射到两个派生类之一的类的情况下,我无法实现 Automapper 转换。

这是我的课程的简化:

我使用的是非静态 Automapper,因此我在启动时从多个配置文件创建 MapperConfiguration,并将 IMapper 实例注入我的 DI 容器。我希望 Automapper 在其 Type 属性为“der1”时将 FooDTO 映射到 FooDerived1,并在其为“der2”时将其映射到 FooDerived2。

我已经看到了使用静态 api 的示例,如下所示:

这会将 FooContainer 的 Foo 属性映射到 FooBase 的正确派生类型。

但是如果没有静态 API,我怎么能做到这一点呢?在配置配置文件时,IMapper 实例尚未创建。有没有办法利用需要 Func< ResolutionContext,object > 的 ConvertUsing() 的重载?分辨率上下文可以给我当前正在使用的任何 IMapper 吗?我一直在寻找,但找不到任何可用的东西。

0 投票
1 回答
205 浏览

automapper - 无法遵循 AutoMapper 的文档 - CreateMapper 在哪里?

我在从 AutoMapper 的静态 API 升级时遇到了问题。

我正在关注此页面上的示例,其中指出

4.1 及之前的典型用法是:

在 4.2 及更高版本中,这看起来像:

但是,在通过 NuGet 使用 v4.2.1 时,我看不到这个“CreateMapper”方法。

我应该用什么?

0 投票
1 回答
2236 浏览

c# - 如何使用 Automapper 映射到内部属性?

我们使用 Automapper 已经有一段时间了,我们认为它非常实用,感谢您创建它!

然而,我们有一个问题:

问题

“如何配置 AutoMapper 以将源属性映射到内部目标属性?”

背景

在我们的分层架构中,Dto 对象从不离开数据访问层,只允许域对象进出数据访问层。因此,从域 POV 来看,域对象不应包含任何数据库知识。然而,实际上数据库 ID 携带起来非常有用 - 期望“业务层”开发人员不应该知道它们。

解决方案:将数据库 ID 添加到域对象,但将它们作为内部销售,这样它们就不会暴露给“业务层”。接下来将公共层(拥有域对象)内部暴露给数据访问层。问题解决了。预计我们无法弄清楚如何让 Automapper (> v3.3.0) 与我们的内部属性一起工作。

中,3.3.0版本BindingFlags被曝光,用来解决问题。

例子

通用.dll

数据访问.dll

在我们的 Profile 类中,我们有CreateMap<PersonDto, Person>();

编辑 1 - 修复了父亲返回类型中的错字。

编辑 2 - 添加了更多信息..

在 Common.Dll 中,我们有如下服务:

在 Business.Dll 中,我们有开发人员使用这样的服务:

重点是,我们不希望业务开发人员有权访问son.FatherIdBusinssess.Dll,也不希望他们有权访问创建域对象的 Dto 对象。

因此,所有“数据库”知识都封装在各种 Common.dll 服务或 DataAccess.dll 中。

谢谢。

0 投票
1 回答
2773 浏览

enums - 如何在可查询投影期间使用 AutoMapper 将 int 映射到其枚举描述?

这是获取其描述属性的枚举扩展方法。

这是源对象:

这是枚举:

这是目标对象:

这是我尝试映射(使用最新的非静态自动映射器版本)。请记住,这是在 EF 可查询投影期间。

这是查询是的投影IQueryable<Account>

这是我得到的例外:

无法将此解析为可查询表达式

0 投票
1 回答
3268 浏览

c# - 如何配置 Automapper 4 以允许空目标值

我在解决如何获取Automapper 4.2.1以允许类型映射时遇到一些问题,其中目标值可能为空,具体取决于源值。

旧版本的 Automapper 允许通过 Mapper 配置设置AllowNullDestination标志,但我找不到新版本的等效配方,并且通过静态 Mapper 对象进行配置的旧机制似乎已过时。

我尝试了以下方法但没有成功:

  • Mapper.Configuration.AllowNullDestinationValues = true;
  • Mapper.AllowNullDestinationValues = true;
  • Mapper.Initialize(c=>c.AllowNullDestinationValues=true);

这是一个演示问题的简单测试用例。由于 Substitute 方法返回 null ,因此在最后一行失败并出现AutoMapperMappingException 。我希望这两个映射都能成功。

我宁愿避免在解决方案中使用.ForMember,因为在我试图解决的实际场景中,bool 和“对象”(实际上是一个自定义类)之间的映射应该适用于整个对象树。

尽管 StackOverflow 上有几个类似的问题,但我还没有找到一个涉及 Automapper 最新版本的问题。

在此先感谢您的任何建议

0 投票
0 回答
302 浏览

dependency-injection - 注入依赖 INTO Automapper 4.2 Map Profile

我在其他地方找不到确切答案的第一个问题。

使用 Automapper 4.2.1、Unity 4.01

我正在尝试让 Automapper 配置文件再次调用我的服务接口以获取嵌套对象以映射到我的目标属性。最终我宁愿不使用 ResolveUsing,但如果这对我来说很好。

我正在使用推荐的 4.2.1 方式在 Unity 容器中注册我的所有地图:

但是当我运行上面我得到 -

“缺少类型映射配置或不支持的映射。”。

关于我所缺少的任何想法?使用 ObjectFactory、Ninject 的其他示例似乎不起作用,因为我不能使用它们。

0 投票
2 回答
808 浏览

c# - Automapper 无法正常工作

我正在使用AutoMapper 4.2.1.0并且我已经将我的地图定义如下。

然后我MapperConfig在我的代码中使用来做到这一点:

但是什么时候TEntityOrder什么TDto时候OrderDto我得到一个例外,上面写着:

缺少从 Order 到 OrderDTO 的映射。使用 Mapper.CreateMap 创建

我做错什么了 ?

0 投票
1 回答
3864 浏览

c# - AutoMapper:如何获取目标属性的名称

如何获取目标属性的名称:

使用 AutoMapper,当我传递源属性名称时如何获取目标属性的名称。

0 投票
1 回答
1970 浏览

c# - Automapper 4.2.1 LINQ 投影仅适用于静态 Mapper.CreateMap?

我正在尝试在实体框架 IQueryables 上使用 Automapper 投影。

在应用程序启动时,我创建并添加了所有使用非静态 CreateMap 方法创建地图的映射配置文件。

所有这些配置文件都在我的 IoC 容器中注册。

尽管我在 mappingConfiguration 的实例中看到了映射配置文件,但我得到了缺少的映射异常。

可能是什么问题呢?我错过了什么吗?我正在使用 Automapper 4.2.1

我注意到在添加静态 Mapper.CreateMap 时,它工作正常。投影是否仅适用于静态 API?我想避免使用静态 API。

完整代码: