基于约定的对象图同步

2024-05-19

我正在规划我的第一个使用 DTO 的架构。我现在正在探索如何将修改后的客户端域对象映射回最初从数据服务检索的 DTO。为了使用 WCF 数据服务客户端库的更改跟踪功能,我必须映射回原始对象图,而不是实例化一个新对象图。

概括地说,我需要一个将实例及其子实例(统称为“源图”)映射到现有实例和(递归地)子实例(统称为“目标图”)的工具以(几乎)100% 约定而非配置为基础的方式。

我能想到的具体所需功能是:

  1. 将目标图中的单值属性替换为源图中对应的值。
  2. 同步集合对:添加到源图中集合中的元素应该添加到目标图中相应的集合中;从源图中的集合中删除的元素应该从目标图中的相应集合中删除。

当谈到映射DTO时,似乎很多人都使用AutoMapper。所以我假设使用该工具可以轻松完成这项任务。但在查看细节后,我怀疑它是否符合我的要求。This https://stackoverflow.com/a/3714072表明 AutoMapper 不能很好地处理#1。同样,this https://stackoverflow.com/a/9772643表明 AutoMapper 对#2 也没有多大帮助。

如果 AutoMapper 会导致大量配置代码,我不想尝试将其用于我的目的。这首先就违背了使用基于约定的工具的目的。所以我想知道:什么是更好的工具来完成这项工作?


None

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

基于约定的对象图同步 的相关文章

  • automapper 带有动作的地图集合

    我有以下代码 IList
  • 使用 Automapper 忽略子类映射中的基类属性的问题

    我有一个场景 我想忽略基类中定义的类的某些属性 我有一个像这样的初始映射 Mapper CreateMap
  • automapper,映射到接口

    我正在使用 automapper 适用于 net 3 5 这是一个例子来说明我正在尝试做的事情 我想将 A 对象映射到 B 对象 类定义 class A public I1 MyI get set class B public I2 MyI
  • Automapper v5 忽略未映射的属性

    以前 当我使用 Automapper v3 x 时 只需添加一个即可忽略未映射的属性 IgnoreUnmappedProperties 扩展看起来像这样 public static class AutoMapperExtensions pu
  • 自动映射器合并对象问题

    让自动映射器工作后 上一个问题 https stackoverflow com questions 36602430 automapper complex types mapping exception 我正在解决另一个问题 把它带到另一个
  • 注入自动映射器

    我一直致力于将 AutoMapper 注入控制器 我喜欢 Code Camp Server 的实现 它围绕 AutoMapper 的 IMappingEngine 创建一个包装器 依赖注入是使用 StructureMap 完成的 但我需要在
  • AutoMapper:如何从字符串中解析 Int 并可以根据数据类型创建规则?

    我的表单有两个模型 一个是指向它的 ViewModel 另一个是来自它的 ControlModel ControlModel 具有所有相同的字段名称和层次结构 但所有字段都是字符串数据类型 如何编写 AutoMapper 代码以将字符串字段
  • 如何在不使用 AutoMapper 的情况下手动映射 DTO?

    我正在学习 C NET Core 并尝试在不使用 AutoMapper 的情况下创建 DTO 映射 因为我正在独自开发一个小项目 并且想在使用额外的包之前了解基础知识 令人惊讶的是我无法在 stackoverflow com 上轻松找到答案
  • AutoMapper:将子集合 1 映射到子集合 2 时丢失未映射的属性值

    使用 AutoMapper 映射嵌套集合时 我希望任何未映射的属性都保留其原始值 相反 它们被设置为 null Example 我有这四门课 注意Test2Child有Name财产 同时Test1Child才不是 public class
  • UML 领域建模

    领域模型和数据模型有什么区别 数据模型是一个design仅描述数据及其关系的模型 该模型包含实体 但它们是根据什么来描述的data他们不负责如何处理这些数据或他们的责任是什么 另一方面 领域模型是用于分析问题领域的概念模型 它用具有关系 数
  • 需要加速automapper...完成113个对象需要32秒

    您好 我在自动映射器方面遇到了一些主要问题 而且速度很慢 我不知道如何加快速度 我正在使用 nhibernate Fluent nhibernate 和 asp net mvc 3 0 Serializable public class T
  • 将对象传递给 AutoMapper 映射

    我正在使用 AutoMapper 被映射到的实体的一些值是我当前方法中的变量 我尝试用谷歌搜索但没有成功 我可以将一组键值对或一个对象或其他东西传递给我的映射以使其使用这些值吗 映射后修改示例 comment variable is a C
  • AutoMapper 泛型转换

    我一直在使用 AutoMapper 并希望进一步进行通用转换 而不是说类似的话 cfg CreateMap
  • AutoMapper 基于枚举映射到不同类型?

    我开始实施自动映射器 https github com AutoMapper AutoMapper 首先我设法将它与我已经在使用的 Castle Windsor 集成 现在我有一个Post我想要映射到的实体LinkPostModel or
  • AutoMapper MapAtRuntime() 的作用是什么?

    我见过MapAtRuntime AutoMapper 中的函数 这是我从智能感知中得到的解释 不要预先计算该成员的执行计划 只需在运行时映射它 通过不内联简化执行计划 但它实际上有什么作用呢 我应该如何 何时使用它 I don t know
  • 如何使用AutoMapper按照类中定义的顺序映射对象?

    给定这两个对象 我使用非常不同的对象来更好地阐明 public class Car public string Brand get set public int Speed get set public class Apple public
  • 将 AutoMapper 从 3 更新为 4,破坏了继承映射

    我将 AutoMapper 从 3 3 1 更新到 4 0 4 这破坏了以下映射并显示此消息 无法将 Foo 类型的对象转换为 BarDTO 类型 Classes public class FooDTO omitted derived DT
  • ServiceStack操作命名约定可以被覆盖吗?

    我需要为 ServiceStack 服务定义一个 DTO 类 服务堆栈使用基于类名的约定 因此如果我的类称为 Transmission 则相应的服务将使用 HTTP 操作中使用的类型为 Transmission 的公开元数据 但我已经有了
  • 使用 AutoMapper 进行 LINQ GroupBy 聚合

    试图让查询工作 但老实说不确定如何 或者是否可能 进行它 因为我尝试过的一切都不起作用 共查询6个表 Person PersonVote PersonCategory Category City FirstAdminDivision Per
  • 自动映射器 UseDestinationValue 不起作用

    目前正在努力解决同一类之间自动映射器的设置 问题是我需要在调用之前使用 NHibernate 从数据库获取实体SaveOrUpdate 然后我将替换所有属性 除了Id and LocationId Mapper public Domain

随机推荐

  • App Engine NDB:如何访问属性的 verbose_name

    假设我有这个代码 class A ndb Model prop ndb StringProperty verbose name Something m A m prop a string value 当然 现在如果我打印 m prop 它会
  • Ruby 动态变量名

    有没有办法在 Ruby 中创建具有动态名称的变量 我正在读取一个文件 当我找到一个字符串时 会生成一个哈希值 e g file File new games log r file lines do l l split do p if p 1
  • 使用pathlib获取主目录

    翻看新的pathlib在 Python 3 4 中 我注意到没有任何简单的方法来获取用户的主目录 我能想到的获取用户主目录的唯一方法是使用旧的os path像这样的库 import pathlib from os import path p
  • 如何找到 Maven 目标绑定的默认阶段?

    在 Maven 中 我如何找出目标的默认阶段 如果该特定目标存在任何默认阶段 Example 我正在使用一个名为的 Maven 插件Jetty Maven 插件 http wiki eclipse org Jetty Feature Jet
  • 在linux上安装python ssl模块,无需重新编译

    是否可以在已经安装了 OpenSSL 的 Linux 机器上安装 python 的 SSL 模块 而无需重新编译 python 我希望它就像复制几个文件并将它们包含在库路径中一样简单 Python版本是2 4 3 谢谢 是否可以在已经安装了
  • 用 Python 绘制直方图

    我有两个列表 x 和 y x 包含字母表 A Z Y 包含它们在文件中的频率 我尝试研究如何在直方图中绘制这些值 但在理解如何绘制它方面没有成功 n bins patches plt hist x 26 normed 1 facecolor
  • WPF DataGrid 验证/绑定模式错误

    我创建了一个非常简单的新项目 仅测试 Microsoft WPF DataGrid 行为 不涉及其他 我只使用标准的 DataGrid
  • MySQL“列计数与第 1 行的值计数不匹配”是什么意思

    这是我收到的消息 ER WRONG VALUE COUNT ON ROW 列计数与第 1 行的值计数不匹配 这是我的全部代码 我的错误在哪里 DROP TABLE student CREATE TABLE employee emp id I
  • 如何捕获未发送到 stdout 的命令行文本?

    我在项目中使用 LAME 命令行 mp3 编码器 我希望能够看到某人正在使用什么版本 如果我只执行 LAME exe 而不带参数 我会得到 例如 C LAME gt LAME exe LAME 32 bits version 3 98 2
  • 类型“void”不可分配给类型“((event:MouseEvent) => void) |不明确的'

    import as React from react import App css import PageTwo from components PageTwo export interface IPropsk data Array
  • 如何实现类似预编译指令的功能

    我正在开发一个 Angular 应用程序 建议对生产中运行的许多东西使用生成的代码 即模板缓存 表达式缓存和静态 DI 注入器 目前没有在不同构建配置之间切换的好方法 因此我使用推荐的模式here https github com angu
  • 英特尔的最后分支记录功能是英特尔处理器独有的吗?

    最后分支记录是指存储与最近执行的分支相关的源地址和目标地址的寄存器对 MSR 的集合 它们受英特尔酷睿 2 英特尔至强和英特尔凌动处理器系列的支持 http css csail mit edu 6 858 2012 readings ia3
  • 如何在 javascript 中基于类型字符串创建新对象?

    如何基于变量类型字符串 包含对象名称 在 javascript 中创建新对象 现在我有 随着更多工具的出现 列表会变得更长 function getTool name switch name case SelectTool return n
  • 在 Jetpack Compose 中启动动画矢量 Drawable

    我有一个动画矢量可绘制R drawable my anim 我想在 Jetpack Compose 中展示并开始 可绘制对象显示 渲染正确 但动画未启动 这是撰写视图 Composable fun SplashView Surface mo
  • 将自动增量列添加到按日期排序的现有表中

    我在数据库中有一个名为 tickets 的现有表 其中包含以下列 id string Primary Key contains UUID like e6c49164 545a 43a1 845f 73c5163962f2 date bigi
  • UIWebView 中的 PDF

    我正在创建一个杂志应用程序 我在 UIWebView 中显示杂志的每一页 不过 Web 视图不会用 PDF 填满屏幕 它周围有一个边界 我怎样才能全屏显示它 我还没有使用 UIWebView 尝试过此操作 但您也许可以执行类似的操作来以编程
  • 如何准确地衡量加载模型所需的时间?

    我想对加载模块 find by id 234 调用 所需的时间进行基准测试 另外 我如何跟踪加载页面所需的时间 我知道我在运行 Rails 服务器时得到此信息 但这是在调试模式下 我想要生产速度基准 可能吗 为了快速检查 我强烈建议检查基准
  • 如何从hdfs读取文件[重复]

    这个问题在这里已经有答案了 我在 project1目录下的hadoop文件系统中有一个文本文件名mr txt 我需要编写 python 代码来读取文本文件的第一行 而不将 mr txt 文件下载到本地 但我无法从 hdfs 打开 mr tx
  • 代码 GetAsyncKeyState(VK_SHIFT) & 0x8000 中的这些数字是什么?它们是必不可少的吗?

    我试图在按下按键的简单动作中找到这些数字及其含义的任何逻辑解释 GetAsyncKeyState VK SHIFT 0x8000 可以使用哪些其他值来代替0x8000它们与按键有什么关系 GetAsyncKeyState 根据文档返回 如果
  • 基于约定的对象图同步

    我正在规划我的第一个使用 DTO 的架构 我现在正在探索如何将修改后的客户端域对象映射回最初从数据服务检索的 DTO 为了使用 WCF 数据服务客户端库的更改跟踪功能 我必须映射回原始对象图 而不是实例化一个新对象图 概括地说 我需要一个将