问题标签 [mapster]

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 投票
0 回答
77 浏览

.net - MapsterMapper 从接口映射到内部设置器属性

我不知道我的设计是否正确,这可以解释我对 MapsterMapper 的问题。我将使用一个示例来说明我的问题:

我有一个看起来像的模型:

我想将它们映射到这些类型:

我正在尝试映射TestModelTest. 但是,目前 MapsterMapper 无法知道映射BModelIB. 所以它会自动生成一个类型,这可能很好,但我希望它使用我的IB,实现B

所以我试着做:

哪个有效,现在它使用我的实例B,但它无法Count从映射BModelCountof B,可能是因为它没有看到 setter B,因为它没有在 中定义IB,我找不到任何解决方法...

我尝试将设置器添加init到我的接口,然后将设置器添加init到我的实现,这解决了问题,但我不想向我的接口添加显式设置器。

如果我的设计完全错误并且问题与 MapsterMapper 无关,请告诉我,以便我修复它。

提前致谢!

0 投票
1 回答
611 浏览

c# - Mapster - 动态属性选择或忽略

我有一个业务需要仅动态选择指定模型的属性,类似于 OData 选择子句。我目前正在使用 Mapster 的 ProjectToType 功能从 EF Core 实体填充视图模型。

有没有办法告诉 Mapster 在它生成的查询中只选择给定的属性列表?或者一种获取完整模型映射的方法,并在运行时更改 TypeAdapterConfig 实例中的映射以忽略不在给定属性列表中的属性?

最终解决方案需要是通用的,并且可以使用导航属性,因为它将应用于数据库中的所有实体。在某些情况下,我们还使用了 DynamicLinq,不确定它是否可以在 Mapsters ProjectToType 功能之上使用。

例子:

实体(长度省略了一些属性):

查看模型(长度省略了一些属性):

给定一个 rest 调用来获取所有模型视图模型的列表,这个属性列表包括:

结果将返回仅包含这些属性的某种类型的字典、动态或匿名对象,而其他属性甚至不会包含在创建的 SQL 查询的最终选择中。

0 投票
1 回答
257 浏览

.net - 简单的注入器和 Mapster 依赖注入设置

Mapster Wiki上的文档不是很好,我似乎无法将它与 Simple Injector 连接起来。

我在下面有这个:

错误

System.InvalidOperationException:配置无效。创建 BoutsController 类型的实例失败。ServiceMapper 类型的构造函数包含名为“serviceProvider”和类型 IServiceProvider 的参数,但未注册 IServiceProvider。要解析 IServiceProvider,它必须在容器中注册。

堆栈跟踪:

0 投票
1 回答
755 浏览

c# - Mapster 使用多个对象映射到一个

我在 Visual Studio 中使用 mapster 和 C#,并且需要将三个对象映射到一个对象。有人做过吗,有例子吗?Mapster 说它有这种能力,但我无法让它工作。谢谢。

0 投票
1 回答
242 浏览

dictionary - Mapster 和字典列表 System.ArgumentNullException: '值不能为空。参数名称:key'

我有一个问题,我的 List 到 Dictionary 的映射不会将 Name 映射到 Key 属性。价值做得很好。实现如下。System.ArgumentNullException: '值不能为空。参数名称:key'

执行

配置

0 投票
0 回答
49 浏览

c# - 如何使用 mapster 覆盖默认映射

我希望始终使用默认映射,然后我希望能够在需要时覆盖它。

这是修改后的示例代码

这是结果

基本上,它会添加新的映射,但不会覆盖现有的映射。

0 投票
3 回答
718 浏览

c# - 如何使用 Mapster 创建可重复使用的映射配置文件?

我有一个 .Net 5 Web Api 项目并想使用

Mapster v7.2.0

以避免手动映射对象。以下代码显示了一个示例场景

  • 设置映射配置
  • 来自多个来源的地图
  • 映射到不同名称的字段

.

运行应用程序时,映射似乎以这种方式工作正常

在此处输入图像描述

我必须以这种方式设置配置,其他方式对我不起作用。但是还有3件事需要解决

  • 配置对我来说看起来不对。它映射待办事项中的所有内容并再次映射特殊字段......所以它可能会循环多次?如果有多个名称不同的字段,这可能会很昂贵
  • 我在控制器内部创建了配置。如何创建一个全局注册一次的可重用映射配置文件类?
  • 当有一个映射配置文件时,这条线var usernameWithTodoTitle = (user, todo).Adapt<(User, Todo), UsernameWithTodoTitle>();对我来说看起来很乱。更好的是var usernameWithTodoTitle = UsernameWithTodoTitle.Adapt((user, todo)) /* pass in as a tuple */因为它根据参数类型选择正确的映射配置文件

你们对如何创建这样的映射配置文件有任何想法吗?

0 投票
0 回答
179 浏览

c# - Mapster:映射到具有只读和可写属性的接口?

我们遇到了使用 Mapster 7.2.0将类映射到接口的问题。映射到目标接口

withsource.Adapt<ITarget>()总是导致GetOnlyProperty具有默认值0

但是,如果目标接口具有所有只读属性,例如

两者GetOnlyPropertyGetSetProperty从源设置为正确的值。

这是一个错误还是一个功能,如果是一个功能,如何让 Mapster 使用只读和可写目标属性填充目标接口?

0 投票
0 回答
102 浏览

c# - 使用导航属性将 DTO 映射到 EF POCO 的最佳实践

我目前正在使用 Mapster 将我的 EF POCO 扁平化为一个 DTO,该 DTO 代表我想要在我的表示层上发送/接收的内容。我苦苦挣扎的地方是如何实现相反的场景,将我的 DTO 映射回带有自动映射器的 EF POCO。假设我只想从 DTO PersonAltNames 属性数组中的每个字符串创建新的 PersonAltNames 对象,那么 Maptster 库的最佳方法是什么,或者这是手动映射器(可以访问我的上下文)只是更有意义?

0 投票
1 回答
197 浏览

asp.net-core - 这是使用 Mapper 映射实体和 dto 的正确方法吗?

我有一个作为服务的层并添加了一个作为映射器的类,我想把我所有的映射放在这里。我正在使用 asp.net core 5 和 Mapster 进行映射,我做对了吗?这是我的代码: