【发布时间】:2021-11-14 12:24:48
【问题描述】:
我遇到过这些问题:Merge two objects using AutoMapper,C# Merge objects with automapper, 这似乎是最有帮助的:Automapper - Multi object source and one destination,但它似乎没有使用 AutoMapper 代码的第 10 版。使用最新版本的 AutoMapper,一切都有其自身的错误。
此外,我刚刚开始使用 StackOverflow,所以我还不能对这个问题发表评论。我只能问我自己的。
在 AutoMapper 中,您现在必须使用称为“配置文件”的东西(请参阅此处的文档:https://docs.automapper.org/en/stable/Dependency-injection.html#asp-net-core)。因此,我的问题是,如何在 .Net 5 或更高版本的 AutoMapper 版本 10 中创建“合并”类型的映射(因此使用依赖注入等)
作为一个请求,如果你给出特定的代码sn-ps,你能否给出代码应该去的where,例如“In Startup.cs”或“Create a new class”,等等
由于 AutoMapper 对我来说太新了,所以一些图书馆术语对我来说仍然是新的。
感谢大家的帮助。
2021 年 9 月 21 日美国东部时间上午 11 点更新 关于为什么我要合并的一些上下文: 这是我为强调要点而概括的场景:
我有 2 个数据源。我通过 API 联系的一个。另一个是通过 MsSql。
API 存储人员信息(姓名、地址),而 Sql 存储 ProgramPerson(上面的 PersonId、程序的许可证号、DateOfLicense 等)
因此,我想从 API 获取信息,然后从 Sql Server 获取信息,最后得到一个 C# 模型。这样,当我需要更新 Person 时,我可以传递 1 个实现 Sql 和 Api 调用接口的模型。
【问题讨论】:
-
人的模型不应该知道或关心数据来自哪里的任何事情。只需获取数据,并在您的人员对象上设置适当的字段。 AutoMapper 似乎有点矫枉过正,正如 Piotr 在他们的回答中所说,不推荐用于此用例。
-
他@Peter K。感谢您的反馈。所以我想要这个的原因是我们仍在积极开发中,并且有可能我们必须更改共享 API 或 Sql 端的字段。我的目标是让 AutoMapper 在每次都避免反射的同时动态创建地图。此外,帮助确保在可能的情况下映射每个字段并且不被忽略。我认为 AutoMapper 总是会在模型发生更改时识别映射序列,而不是在一个模型或另一个模型发生更改后检查数据服务或更多。
-
听起来很危险,一切都在不断变化。我认为你最好让人工审查映射的所有更改,而不是依赖 AutoMapper 的“魔力”。 YMMV
-
很公平。我们正在组织内创建一个共享 api,共享接口和模型库(通过版本化的 Nuget 包)。但是,我非常感谢您的意见和反馈。这个问题的历史版本很受欢迎,所以我没想到这是一件危险的事情。再次感谢。
标签: c# merge automapper .net-5