如何将 NHibernate 和 DTO 与 RIA 服务结合使用

2024-05-04

我将 NHibernate 与 RIA 服务和 Silverlight 4 一起使用。我创建 DTO 来通过 RIA 服务传输数据,而不是分发我的域层对象(根据 Martin Fowler 的分布式对象设计第一定律:“不要分发您的对象!” )。 DTO 对象从域层中的五个相应层展平为两层。

这是我的问题。在 Silverlight 4 中进行更改后,RIA 服务知道哪些 DTO 对象已被修改,但在服务器端更新代码中,我需要将更改传输回“真实”域层对象,以便 NHibernate 可以将这些更改应用回数据库。最好的方法是什么?

由于 DTO 旨在轻量级,仅包含客户端所需的信息,因此我显然会not想要将相应的域对象嵌入到 DTO 中。

以下是我考虑过的一些可能性:

1) 在 DTO 对象中保存对域对象的引用。只要only引用被序列化并通过网络发送,not整个引用的对象,那么这可能是一个合理的方法。当然,这些引用在客户端是无效的,因为它们会指向不存在的内存位置,但在旅程结束时,它们可以在服务器端使用。 (?)

2) 与上面相同,但仅在 DTO 对象中保存对域聚合根的引用。然后使用对象关系遍历来获取其他相关的领域对象。

3) 将域对象的 ID 存储在 DTO 中,并使用 NHibernate 的“按 ID 获取”或“按 ID 加载”功能来检索正确的域对象,以便应用更新。

4)同上,但仅对聚合根使用“Get”或“Load”,然后对所有相关对象进行遍历。

也许以上都不理想,还有更好的方法……


每当我在 ORM 之上构建访问层时,我通常会继续将实体的唯一键放入 DTO 中,以便进行跟踪,当然在添加的情况下支持默认(T)。

然后,当对象返回到服务器端时,我可以轻松执行加载,从 DTO 编组更改的值,然后让会话保存它或执行显式保存。

这将是你的 3/4。

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

如何将 NHibernate 和 DTO 与 RIA 服务结合使用 的相关文章

  • AutoMapper 将 IdPost 映射到 Post

    我正在尝试根据规则将 DTO 上的 int IdPost 映射到 Blog 对象上的 Post 对象 我想实现这一点 BlogDTO IdPost gt Blog Post 帖子将由 NHibernate 加载 Session Load I
  • 添加对共享类的多个 WCF 服务的服务引用

    我正在尝试将我的 WCF Web 服务拆分为几个服务 而不是一个巨大的服务 但是 Visual Studio Silverlight 客户端 复制了两个服务共享的公共类 这是一个简单的例子来说明我的问题 在此示例中 有两个服务 两者都返回类
  • 如何在 Silverlight 3 中将 .NET RIA 服务与 MVVM 结合起来?

    NET RIA 服务被描述为 Silverlight 的 n 层框架 我一直想知道这个框架和模型 视图 视图模型模式之间有什么关系 它们是否存在冲突 或者您能看到协同组合的潜力吗 NET RIA 服务和 MVVM 是协同作用的 并不冲突 例
  • NHibernate - 无法执行查询 - 输入字符串的格式不正确

    我已经为此摸不着头脑有一段时间了 我不知道出了什么问题 概述 我的 MySQL 数据库中有两个表 两者都正确映射到数据库 我可以加载数据 并且我能够查询一个表 但不能查询另一个表 我研究过的解决方案 表和 C 代码之间的类型转换问题 映射问
  • 是否可以在不改变作为框架一部分的 DDD 模型的情况下使用 NHibernate

    我挖掘了很多关于DDD方法 无处不在的语言 聚合 存储库等 我认为 与我读到的很多内容相反 实体应该有行为而不是不可知论 我看到的所有例子都倾向于呈现实体虚拟自动属性 and an 空构造函数 受保护或最糟糕的是公开 就是这样 我认为这种对
  • 使用 LINQ 的 Silverlight 客户端数据库

    我正在创建一个浏览器外 silverlight 应用程序 并希望在客户端有一个数据库 我看过 sqlite 但似乎它不适用于 silverlight 如果我能使用 LINQ 那就太好了 我更喜欢免费的解决方案 但付费始终是一种选择 有什么建
  • 如何将这个基于代码的 WPF 工具提示转换为 Silverlight?

    以下工具提示代码适用于WPF 我正在努力让它发挥作用银光 但它给了我这些errors TextBlock does not contain a definition for ToolTip Cursors does not contain
  • NHibernate 按 id 逐出

    大家都知道session中有缓存 这个缓存一般可以通过2种方法来清除 会话 驱逐 会话 清除 第二种方法不仅删除单个条目的所有缓存 我有商业方法 它接收大对象的 id 来自 aspx 站点 或有时接收多个 id 并在数据库中进行原生sql操
  • 使用 MVVM 和 Silverlight 的“等待”屏幕的通常首选方法

    我正在推进一个小型的概念验证应用程序 这主要是为了增强我在 Silverlight 中的 MVVM 技能 今天遇到一个有趣的问题 我不知道如何解决 MVVM 方式 我在搜索过程中也没有成功找到任何相关内容 关于这个问题 我有一个带有数据库后
  • 是一对一的关系不好的策略

    用户始终拥有一个钱包 一个钱包始终属于一位用户 由于我想分离与钱夹相关的属性 我创建了 Wallet 对象并能够跟踪钱交易 我创建了 public Wallet Entity
  • 如何将 NHibernate 与 Lucene.Net 集成

    这变得很烦人 尝试将 Lucene Net 搜索与 NHibernate 集成 我只找到了 07 年的一些信息 有没有好看的最新这个的教程 从哪里开始 下载什么等 有没有办法在其他地方设置 NHibernate Search 元数据 而不是
  • Silverlight 4 PLINQ

    我有一个非常简单的问题 是否可以将 PLINQ 与 Silverlight 4 一起使用 因为它似乎不存在于最常引用的程序集中 它不受支持 但您可以在这里投票 http dotnet uservoice com forums 4325 si
  • 一次调用多个结果

    分页数据时 我不仅想返回10条结果 还想获取所有页面中的项目总数 如何在一次调用中获取页面的总计数和结果 我的分页方法是 公共IList GetByCategoryId intcategoryId intfirstResult intmax
  • 我可以在 NHibernate QueryOver 中使用 SQL 函数吗?

    我一直在互联网上搜索 但找不到有关如何使用 nhibernate 3 0 的 queryover 的示例 例如 我想在查询的 where 子句中使用字符串函数 前任 var item Query Where x gt x Name ToLo
  • 在nhibernate中设置聚集索引

    我试图在 nhibernate 中定义一个不是 id 的属性作为聚集索引 但我发现没有办法做到这一点 谁能给我指点一下这是如何完成的 或者它是当前在 nhibernate 中不可用的东西 提前致谢 您可以使用
  • 更改 NHibernate Session.Save 命令超时

    我们有几个长时间运行的后端进程 其运行时间超过默认的 30 秒 我们的NHibernate版本是2 0 1 4000 Spring NET是1 2 0 20313 NHibernate 通过 Spring NET 进行配置
  • Silverlight 4 中使用显式样式进行运行时主题切换

    有人要求我们向我们的应用程序添加动态主题切换 但我在弄清楚如何执行此操作时遇到了问题 目前的情况是这样的 我们的应用程序有一个具有显式 非隐式 样式的合并资源字典 我们应用程序中的视图通过以下方式引用这些样式StaticResource标记
  • 无法转换类型为“NHibernate.Collection.Generic.PersistentGenericBag”的对象

    public List
  • 保存时的 NHibernate FlushMode

    我已将 NHibernate 会话上的 FlushMode 属性设置为 FlushMode Never 但是当我调用 session Save User 时 无论如何都会调用数据库 这是应该如何工作的吗 我认为在我调用 Flush 之前它不
  • Sql 2008 文件流与 NHibernate

    我试图在 sql server 2008 中使用 Filestream 来存储用户上传的图像 我的问题是NHibernate不会出错 但它也不会将数据保存到数据库中 没有创建记录 下面的 Image 类是一个自定义类 不要与 System

随机推荐

  • 保存并加载 .bat 游戏

    我正在制作一个用bat编写的文本游戏 并且游戏已经完成 或者更多 其中的很大一部分 例如命令 以及可以玩它的阶段 但是 我想添加保存游戏并再次加载的功能 我认为可以通过让 bat 文件写入需要保存的变量 例如项目变量 来做到这一点 但是 我
  • 新主题产品给出“ValueError:主题 my.theme 不可用”

    我使用这些说明通过 zopeskel 创建了一个新主题http docs plone org adapt and extend theming theme product with diazo html http docs plone or
  • Android:OneSignal 如何使用自定义图标或应用程序图标更改通知账单图标?

    收到通知时 将显示帐单图标 而不是我覆盖它以从代码中显示的应用程序图标或自定义图标 我可以从仪表板更改图标 但我想从代码中处理它 内化 OneSignal startInit this inFocusDisplaying OneSignal
  • 这些比较应该返回什么?

    我有一个使用 string compare string string 对某些值进行排序的应用程序 我不明白的是为什么 1022 比较小于 10 23 而 10 23 比较小于 1024 是否有特定于 值的东西导致了这个结果 string
  • 找不到“folly/Portability.h”文件 React 库

    我的 React Native 项目在 Xcode 上遇到构建失败 错误是 folly Portability h file not found 在过去的几天里 我一直在尝试自己解决这个问题 但无法解决 RN info React Nati
  • 如何让 ckeditor 停止删除空 div

    stackoverflow 上也有类似的问题 但这些问题的答案对我不起作用 所以请不要将其标记为重复 在我的 cms 中 我希望人们能够添加 SPA 单页应用程序 内容页面 此类应用程序通常只有一个具有某些属性的 div 并且使用 java
  • android 设置按下 Enter 键时隐藏键盘(在 EditText 中)

    When my user press Enter on the virtual android user validate entry keyboard my keyboard stay visible Why 这是我的 Java 代码 p
  • 使用自签名证书将本地 Docker 镜像推送到私有存储库

    我正在尝试推送图像 比如说foo bar 从我的本地 Docker 注册表到在 OpenShift 3 11 上运行的注册表 实际上迷你换档 https github com minishift minishiftv1 33 0 ba294
  • 尝试将 CLI 登录到 Firebase 时出现“出现问题”

    大约 2 年后 我重新开始使用 Firebase 现在我在尝试将 CLI 登录到 Firebase 时遇到问题 是的 我已经安装了npm i g firebase tools 我已经尝试了 3 个不同的命令 所有这些命令都会生成下面的图像之
  • WCF:配置已知类型

    我想知道如何在 WCF 中配置已知类型 例如 我有一个Person类和一个Employee班级 这Employee类是 的子类Person班级 两个类都标有 DataContract 属性 我不想对类的已知类型进行硬编码 例如将 Servi
  • xamarin 谷歌地图不工作

    我使用以下链接创建了地图http developer xamarin com guides android platform features maps and location maps part 2 maps api http deve
  • 在正投影中绘制世界地图给出“非有限点”

    我有一个世界国家的形状文件 从下载here http thematicmapping org downloads TM WORLD BORDERS 0 3 zip 我可以使用 R 在 R 中绘制它 countries lt readOGR
  • 如何将异步函数传递给 Python 中的线程目标?

    我有以下代码 async some callback args await some function 我需要将它作为目标传递给线程 thread threading Thread target some callback args som
  • 查找返回的 mysql 结果中的行数(nodejs)

    当使用 felixge 的 mysql for node js 时 如何向结果对象询问返回的行数 我有一个相当昂贵的查询 所以我不想运行COUNT 首先 只是为了第二次运行查询 如果是选择查询 则只需获取返回数组的长度即可 connecti
  • 如何获取 Visual Studio 2017 的离线安装程序?

    我最近尝试安装视觉工作室 2017 但没有离线安装程序 如何获取它的离线安装程序 我也尝试安装Xamarin 尽管我有最新的安卓软件开发工具包 它要求我下载安卓软件开发工具包再次 如何纠正 提前致谢 要生成离线安装程序 您首先需要下载相应的
  • 如何在 NetBeans 中执行“git Blame”?

    NetBeans 内置了对 git 的支持 我可以做一个git blame在 NetBeans 内 如果是这样 怎么办 I googled https www google nl search q netbeans git blame它 但
  • 为什么 Resources.Load 返回 null?

    我的项目有多个精灵 位于 Assets Sprites 中 我想使用 C 脚本加载它们 我已经测试过这个 Sprite myFruit Resources Load
  • 使用服务器帐户模拟用户以访问其 Google 云端硬盘时出现 401 未经授权错误

    我正在用 Java 编写一个后端进程 它将模拟用户并在其 Google Drive 上添加 删除文档 服务器帐户似乎验证正确 但是当我尝试冒充用户时 我得到一个401 Unauthorized error 请参阅下面的详细信息 配置 我已配
  • Python:Tkinter Treeview 可搜索

    相当直接的问题 尽管我用了最好的谷歌搜索 但我找不到任何相关内容 我有一个 Python 应用程序 它使用 Tkinter Treeview 小部件作为表格 这对于我需要使用它的用途来说效果很好 但最终会在一些树中出现几百个项目 无论如何
  • 如何将 NHibernate 和 DTO 与 RIA 服务结合使用

    我将 NHibernate 与 RIA 服务和 Silverlight 4 一起使用 我创建 DTO 来通过 RIA 服务传输数据 而不是分发我的域层对象 根据 Martin Fowler 的分布式对象设计第一定律 不要分发您的对象 DTO