问题标签 [automapper]

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 回答
1203 浏览

.net - .NET Compact Framework 3.5 上是否提供像 AutoMapper 这样的映射库?

是否有人在使用 AutoMapper 的 .NET Compact Framework 端口,或者是否有任何类似的用于 .NET Compact Framework 的映射库?

0 投票
2 回答
12193 浏览

c# - AutoMapper - 如何使用 ConstructedBy 方法将参数传递到自定义解析器?

在我的 ASP.NET MVC 2 (RC) 项目中 - 我使用 AutoMapper 在 Linq to Sql 类(Media)和视图模型(MediaVM)之间进行映射。视图模型有一个 SelectList 属性,用于视图中的下拉菜单。我有一个自定义值解析器来填充数据库中的 SelectList 属性项,但我想知道是否有办法将源模型中的几个值传递到解析器(使用 ConstructedBy 方法?)到 a)定义所选项目和 b ) 从数据库中过滤项目。源对象被传递到自定义解析器 - 但解析器用于具有不同类型源对象的几个不同视图模型,因此宁愿定义从我的映射配置中获取值的位置。这是我的视图模型:

自动映射器映射配置:

能够在 .ForMember 映射子句上做这样的事情会很好:

有没有办法做到这一点?

0 投票
4 回答
2095 浏览

asp.net - 有关使用字段子集的视图模型和模型更新的最佳实践

通过选择 MVC 来开发我们的新站点,我发现自己处于明显实时的“最佳实践”之中。两周前,NerdDinner 是我的向导,但随着 MVC 2 的发展,即使它似乎已经过时了。这是一次激动人心的经历,我很荣幸能每天与聪明的程序员密切接触。

现在我偶然发现了一个我似乎无法直接回答的问题 - 无论如何来自所有博客 - 我想从社区中获得一些见解。这是关于编辑(阅读:编辑操作)。那里的大部分材料、教程和博客都涉及创建和查看模型。因此,虽然这个问题可能无法说明问题,但我希望能够进行一些讨论,为我决定我要走的发展道路做出贡献。

我的模型代表一个具有多个字段(如姓名、地址和电子邮件)的用户。事实上,所有的名字都在字段上,分别是名字、姓氏和中间名。详细信息视图显示所有这些字段,但您一次只能更改一组字段,例如您的姓名。用户展开一个表单,而其他字段仍然在上方和下方可见。因此,回发的表单包含代表模型的字段子集。

虽然这对我们和我们的布局问题很有吸引力,但由于各种原因,严重的 MVC 开发人员应该回避它。我一直在阅读一些模式和最佳实践,这似乎与 viewmodel == view 的范式不相符。还是我弄错了?

无论如何,NerdDinner 规定使用 FormCollection och UpdateModel。所有空字段都被愉快地忽略了。从那时起,MVC 社区已经放弃了这种方法,以至于没有发现 MVC 2 中的错误。如果您的 formcollection 中没有完整的模型,UpdateModel 将无法工作。

获得最多赞誉的视图模型模式似乎是包含自定义视图模型实体的专用视图模型,并且是唯一可以与我的设计问题兼容的视图模型。它需要大量的映射,尽管使用AutoMapper和 Jimmy Bogard 的想法有所减轻,这可能值得,也可能不值得。他还提出了视图和视图模型之间的 1:1 关系。

为了与这些设计范例保持一致,我将为我不断扩展的每个字段集创建一个视图和关联视图。每个视图模型几乎相同,只是在只读字段上有所不同,视图还包含许多重复的标记。这对我来说似乎很荒谬。将来我可能希望能够显示同时打开的两个、更多或所有字段集。

我会仔细阅读我希望引发的讨论。提前谢谢了。

0 投票
3 回答
2216 浏览

asp.net - Automapper 有什么用?

Automapper有什么用?

它将如何帮助我处理我的域和控制器层(asp.net mvc)?

0 投票
6 回答
13822 浏览

c# - 是否可以使用 Automapper 将多个 DTO 对象映射到单个 ViewModel?

我想知道是否可以使用 Automapper 将多个 DTO 对象映射到单个 ViewModel 对象?

本质上,我有多个 DTO 对象,并希望在 ASP.NET MVC 2.0 的单个屏幕上显示来自每个对象的信息。为此,我想将 DTO 对象(或它们的一部分......)展平到 Viewmodel 中,并将所述 viewmodel 传递给视图。如果我有一个 DTO,这将很容易,但我从未见过它是由多个完成的。显然有许多迂回的方法可以做到这一点(在自动映射器之外),但如果可能的话,这是我想采用的方法。

0 投票
1 回答
724 浏览

c# - 使用 AutoMapper 映射 ViewModel/partials

我已经创建了演示模型,我想将它(使用 AutoMapper)映射到 ViewModel 中。ViewModel 是复合的 / 因为我正在使用部分,并且我想在其他视图/部分上重用例如 KeyboardsViewModel。

如何将此演示模型映射(设置映射)到 ViewModel?这是正确的方法吗?

谢谢!

编辑:尝试后我认为这是一种选择:

似乎它有效,但我不确定这是否是最佳/正确的方式......

0 投票
1 回答
5272 浏览

c# - 是否有使用 AutoMapper 的 ValueResolver 映射 EF 实体的 EntityKey 值的通用方法?

不确定标题是否有意义,但这就是我正在做的事情。我正在使用 AutoMapper 将我的实体框架实体映射到我的 DTO 对象,反之亦然。当我尝试将 DTO 数据映射到 EF 实体时,问题就出现了。EntityKey 没有属性到属性的映射。为了解决这个问题,我做了一些类似的事情:

VideoEntityKeyResolver 类看起来像:

我想知道是否有一种更通用的方法来执行此操作,我可以有一个带有构造函数的类,该构造函数在构造函数中获取实体集名称、键属性名称和键值。

我考虑过只为我的 DTO 对象添加一个 EntityKey 属性,这听起来很像跨越流,因为创建 DTO 对象的全部目的是在我的应用程序的其余部分中严格与我的数据层的联系。

在一个完全不相关的注释上(如果需要,我可以创建一个新问题),使用 AutoMapper 时我究竟需要在哪里定义我的映射?目前我正在我的上下文对象(这是我的 EF 存储库对象)的构造函数中执行此操作,但我认为这相当昂贵且不正确,但它确实有效。

0 投票
5 回答
11931 浏览

c# - 实体框架,AutoMapper,处理实体更新

我最近才开始使用 Entity Framework 1.0,相信我开始感受到每个人都在谈论的痛苦。我正在尝试使用最佳实践,因此我有一组通过 AutoMapper 映射到我的实体和从我的实体映射的 DTO。

真正的问题是当我试图更新一个对象时。第一个问题是我找不到创建新实体的方法,从我的 DTO 传输数据,并且仍然让实体 ObjectContext 意识到它已被更改。我使用了以下代码:

然后我想,也许我需要先从数据库中获取实体,附加到上下文,调用 Mapper 上的 Map 方法,然后调用 SaveChanges。这是我所做的:

现在我们遇到了一个可爱的 EF 问题,即不允许更改属性 VideoId,因为它由 Video 实体上的 EntityKey 属性使用。迷人的。我已经设置了映射,以便当我从 DTO 映射到 EF 实体时,EntityKey 属性将获得一个值。现在我需要一种方法来对该映射规则进行例外处理,但不知道从哪里开始。我想我可以在这个方法中创建一个全新的映射规则并将 EntityKey 和 VideoId 属性设置为被忽略,但这似乎很草率。此外,我不确定此时创建的映射是否会保留。如果它覆盖了允许 DTO 将值映射到实体上的 EntityKey 的初始设置,那将以完全不同的方式适得其反。

有人有更好的主意吗?

0 投票
3 回答
2509 浏览

c# - 为什么 AutoMapper 有一个看似更强大的 ValueResolver 却有一个 IValueFormatter?

它看起来像 anIValueFormatter接受一个 type 的值object并返回一个 type 的值string,而 aValueResolver<TSource, TDestination>接受一个任何类型的值并返回一个任何类型的值。所以,它更灵活。还有一个问题是,使用 a ValueResolver,您永远不需要将源转换为特定类型——您在类定义中明确定义它。

鉴于此,为什么要使用IValueFormatter?它会做一些不能做的事情ValueResolver吗?我误解了它是如何工作的吗?

0 投票
2 回答
42296 浏览

c# - 在 Automapper 中使用 Profiles 来映射具有不同逻辑的相同类型

我在我的 ASP.NET MVC 网站中使用 AutoMapper 将我的数据库对象映射到 ViewModel 对象,并且我正在尝试使用多个配置文件来映射相同的类型,但使用另一种逻辑。通过阅读马特的博客文章,我有了这样做的想法,他说:

真正关键的部分是 AutoMapper 配置文件。您可以使用配置文件对配置进行分组。也许在一个配置文件中您以一种方式格式化日期,在另一个配置文件中您以另一种方式格式化日期。我在这里只使用一个配置文件。

所以我为一个案例创建了一个配置文件:

另一个用于另一种情况:

但是,我找不到Mapper.Map<>()指定配置文件的方法的任何重载。我也没有运气看了一下这个Configuration物体。
最后注册的配置文件始终优先。

有没有办法为此目的使用配置文件?