问题标签 [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.
.net - MapsterMapper 从接口映射到内部设置器属性
我不知道我的设计是否正确,这可以解释我对 MapsterMapper 的问题。我将使用一个示例来说明我的问题:
我有一个看起来像的模型:
我想将它们映射到这些类型:
我正在尝试映射TestModel
到Test
. 但是,目前 MapsterMapper 无法知道映射BModel
到IB
. 所以它会自动生成一个类型,这可能很好,但我希望它使用我的IB
,实现B
。
所以我试着做:
哪个有效,现在它使用我的实例B
,但它无法Count
从映射BModel
到Count
of B
,可能是因为它没有看到 setter B
,因为它没有在 中定义IB
,我找不到任何解决方法...
我尝试将设置器添加init
到我的接口,然后将设置器添加init
到我的实现,这解决了问题,但我不想向我的接口添加显式设置器。
如果我的设计完全错误并且问题与 MapsterMapper 无关,请告诉我,以便我修复它。
提前致谢!
c# - Mapster - 动态属性选择或忽略
我有一个业务需要仅动态选择指定模型的属性,类似于 OData 选择子句。我目前正在使用 Mapster 的 ProjectToType 功能从 EF Core 实体填充视图模型。
有没有办法告诉 Mapster 在它生成的查询中只选择给定的属性列表?或者一种获取完整模型映射的方法,并在运行时更改 TypeAdapterConfig 实例中的映射以忽略不在给定属性列表中的属性?
最终解决方案需要是通用的,并且可以使用导航属性,因为它将应用于数据库中的所有实体。在某些情况下,我们还使用了 DynamicLinq,不确定它是否可以在 Mapsters ProjectToType 功能之上使用。
例子:
实体(长度省略了一些属性):
查看模型(长度省略了一些属性):
给定一个 rest 调用来获取所有模型视图模型的列表,这个属性列表包括:
结果将返回仅包含这些属性的某种类型的字典、动态或匿名对象,而其他属性甚至不会包含在创建的 SQL 查询的最终选择中。
.net - 简单的注入器和 Mapster 依赖注入设置
Mapster Wiki上的文档不是很好,我似乎无法将它与 Simple Injector 连接起来。
我在下面有这个:
错误
System.InvalidOperationException:配置无效。创建 BoutsController 类型的实例失败。ServiceMapper 类型的构造函数包含名为“serviceProvider”和类型 IServiceProvider 的参数,但未注册 IServiceProvider。要解析 IServiceProvider,它必须在容器中注册。
堆栈跟踪:
c# - Mapster 使用多个对象映射到一个
我在 Visual Studio 中使用 mapster 和 C#,并且需要将三个对象映射到一个对象。有人做过吗,有例子吗?Mapster 说它有这种能力,但我无法让它工作。谢谢。
dictionary - Mapster 和字典列表 System.ArgumentNullException: '值不能为空。参数名称:key'
我有一个问题,我的 List 到 Dictionary 的映射不会将 Name 映射到 Key 属性。价值做得很好。实现如下。System.ArgumentNullException: '值不能为空。参数名称:key'
执行
配置
c# - 如何使用 mapster 覆盖默认映射
我希望始终使用默认映射,然后我希望能够在需要时覆盖它。
这是修改后的示例代码
这是结果
基本上,它会添加新的映射,但不会覆盖现有的映射。
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 */
因为它根据参数类型选择正确的映射配置文件
你们对如何创建这样的映射配置文件有任何想法吗?
c# - Mapster:映射到具有只读和可写属性的接口?
我们遇到了使用 Mapster 7.2.0将类映射到接口的问题。映射到目标接口
withsource.Adapt<ITarget>()
总是导致GetOnlyProperty
具有默认值0
。
但是,如果目标接口具有所有只读属性,例如
两者GetOnlyProperty
和GetSetProperty
从源设置为正确的值。
这是一个错误还是一个功能,如果是一个功能,如何让 Mapster 使用只读和可写目标属性填充目标接口?
c# - 使用导航属性将 DTO 映射到 EF POCO 的最佳实践
我目前正在使用 Mapster 将我的 EF POCO 扁平化为一个 DTO,该 DTO 代表我想要在我的表示层上发送/接收的内容。我苦苦挣扎的地方是如何实现相反的场景,将我的 DTO 映射回带有自动映射器的 EF POCO。假设我只想从 DTO PersonAltNames 属性数组中的每个字符串创建新的 PersonAltNames 对象,那么 Maptster 库的最佳方法是什么,或者这是手动映射器(可以访问我的上下文)只是更有意义?
asp.net-core - 这是使用 Mapper 映射实体和 dto 的正确方法吗?
我有一个作为服务的层并添加了一个作为映射器的类,我想把我所有的映射放在这里。我正在使用 asp.net core 5 和 Mapster 进行映射,我做对了吗?这是我的代码: