问题标签 [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 投票
4 回答
3860 浏览

c# - 用于双向映射的简单约定 Automapper(到/从 ViewModel 的实体)

更新:这些东西已经演变成一个不错的项目,请参见http://valueinjecter.codeplex.com


看看这个,我刚刚写了一个简单的自动映射器,它从一个对象的具有相同名称和类型的属性中获取值并将其放入另一个对象中,您可以为您可能需要的每种类型添加异常(ifs、switch)

所以告诉我你怎么看?

我这样做了,所以我可以做这样的事情:

这就是它的开始:

我在我的 Inputs/Dto/ViewModels 中为 DropDowns 使用“对象”类型,因为我向 html 发送了 IEnumerable<SelectListItem> 并且我收到了返回的选定键的字符串数组

更新: 真正的用法:
构建方法(输入= Dto):

在控制器中:

真正的 Map 方法

0 投票
2 回答
13547 浏览

c# - C# automapper 嵌套集合

我有一个像这样的简单模型:

我用 Automapper 做的是:

它抛出一个异常,上面写着:“OrderDto 中的属性 OrderLineDtos 未映射,添加自定义映射......”当我们在 Domain 和 DomainDto 中使用自定义语法时,我如何指定 OrderDto 中的集合 OrderLineDtos 对应于OrderLines 是否有序?

谢谢

0 投票
5 回答
9973 浏览

.net - 在 Bootstrapper 中配置 Automapper 违反了开闭原则?

我在 Bootstrapper 中配置 AutomapperBootstrap()Application_Start()Bootstrapper. .

你怎么看,我真的违反了这个原则吗?

0 投票
1 回答
2375 浏览

c# - 具有泛型类型继承的 AutoMapper

我正在尝试使用 AutoMapper 将 CustomerDTO 与我的域实体 ICustomer 映射。一切都适用于第一个继承级别,但不适用于其他继承级别。

我正在为我的域模型使用接口,因为具体类型是由我的 LinqToSql 数据库基础设施层的 StructureMap 注入的。

现在 AutoMapper 映射

现在我在哪里使用映射

我在“Id”属性上有一个字典缺少键异常...

0 投票
2 回答
1023 浏览

automapper - 带有 IList 的 AutoMapper

我有带有财产的文章类

由于标签没有 SET,所以从视图模型映射到视图时,自动映射器不会设置标签。有任何想法吗?

0 投票
1 回答
812 浏览

asp.net-mvc - 如何将 EditModel 映射到命令消息?

Los Techies 的 Jimmy Bogard说他将他的 EditModel 映射到命令消息,而不是将 EditModel 映射到 DomainModel。谁能进一步解释这一点?

0 投票
2 回答
28059 浏览

c# - 使用 AutoMapper 获取异常

我正在对一种方法进行单元测试,该方法使用 automapper 将类从我的域映射到 linq 到 sql 类。大致来说,类和映射如下(SupplierEligibilityAllocated 是 L2S 自动生成的类)。

但是,当该方法执行映射时,它会引发以下异常。

我验证了我在测试之前创建了映射,并且我Mapper.AssertConfigurationIsValid()没有任何问题地打电话。我也手动进行了映射,没有任何问题。任何人都知道可能导致这种情况的原因吗?

0 投票
1 回答
642 浏览

c# - Automapper:重用创建的地图

例如,如果我有这样的事情:

我有

比我必须再次重复 Foo 到 FooDto 的映射逻辑:

目前我在 ValueResolver 中使用 Mapper.Map 但我认为可能有更好的方法

0 投票
2 回答
10414 浏览

c# - AutoMapper: Mapping between a IDataReader and DTO object

I have a DataReader which contains the result of a stored procedure. The naming convention for the columns use underscores for spaces.

I have been able to successfully map between IDataReader and IEnumerable, but only if the fields match exactly. I do not want to the naming convention used in the stored procedures to dictate the way I name fields in my objects. And the same is true on the database side. I do not think I would be successful enforcing Pascal Case upon the DBAs.

I would like to avoid having to use ForMember() foreach field I need to map. That would defeat the purpose of using AutoMapper.

I found a previous post on the topic which I have used as a reference in my tests. I have not been able to get the correct configuration/mapping for the test to pass successfully. I am hoping someone can assist.

0 投票
3 回答
5724 浏览

asp.net-mvc - 具有自定义格式的 ASP.NET MVC ViewModel 映射

我正在处理的项目在域模型中有大量货币属性,我需要对这些属性进行格式化,$#,###.##以便在视图之间进行传输。我对可以使用的不同方法有一个看法。一种方法是在视图内显式格式化值,如Steve Michelotti 的“模式 1”

...但这很快就开始违反DRY 原则。

首选方法似乎是在 DomainModel 和 ViewModel 之间的映射期间进行格式化(根据操作部分 4.4.1 和“模式 3”中的 ASP.NET MVC)。使用 AutoMapper,这将产生如下代码:

使用IValueFormatter这种方式效果很好。现在,如何将它从 DomainModel 映射回 ViewModel?我试过使用自定义class CurrencyResolver : ValueResolver<string,decimal>

然后将其映射为:

这将满足这个测试:

FromMember...但我觉得我不应该在做之后明确定义它被映射ResolveUsing的属性,因为这些属性具有相同的名称 - 有没有更好的方法来定义这个映射?正如我所提到的,有很多具有货币值的属性需要以这种方式映射。

话虽如此 - 有没有一种方法可以通过全局定义一些规则来自动解决这些映射?ViewModel 属性已经装饰了用于验证的DataAnnotation属性[DataType(DataType.Currency)],所以我希望我可以定义一些规则:

...这样我就可以最大限度地减少每种对象类型的样板设置量。

我也有兴趣听到任何替代策略来完成自定义格式的往返视图。


来自ASP.NET MVC in Action

起初我们可能想将这个简单的对象直接传递给视图,但是 DateTime? [模型中的] 属性会导致问题。例如,我们需要为它们选择一种格式,例如 ToShortDateString() 或 ToString()。当属性为空时,视图将被迫进行空检查以防止屏幕爆炸。视图很难进行单元测试,所以我们希望它们尽可能的精简。因为视图的输出是传递给响应流的字符串,所以我们将只使用对字符串友好的对象;也就是说,在对它们调用 ToString() 时永远不会失败的对象。ConferenceForm 视图模型对象就是一个例子。请注意,清单 4.14 中的所有属性都是字符串。在将此视图模型对象放入视图数据之前,我们将正确格式化日期。这样,视图不需要考虑对象,它可以正确地格式化信息。