跨数据库会话/工作单元复制持久数据

发布于 2024-08-26 01:31:20 字数 484 浏览 7 评论 0原文

我使用 DevExpress 的 XPO ORM,但我怀疑这也适用于许多其他 ORM,而且这种情况一直发生在我身上,并且开始变得烦人。

情况是:

  • 1 个带有 UnitOfWork 的表单,用于使用数据库中的数据填充用户控件等。 (例如,用户设置表单)
  • 带有用于填充用户控件的工作单元的对话框窗口。 (例如权限屏幕)

我能想到的分辨率并不理想。请记住,我无法在 XPO 中跨会话/工作单元复制对象(据我所知)。

  1. 我不想只在对话框中创建持久对象并使用对话框的工作单元提交它们,因为这样用户就无法在不进行更改的情况下取消表单(除非我返回到对话框) DB 并删除了对话框中持久存在的对象)

  2. 强制软件中的所有对话框在构造函数中引用工作单元的味道很糟糕。

  3. 必须以在对话框中创建的表单重新创建对象,味道也很糟糕。

    必须

我还能做什么?

I use DevExpress' XPO ORM, but I suspect that this applies to many other ORMs and this happens to me all of the time and it's starting to get annoying.

The situation is:

  • 1 form with a UnitOfWork used to populate user controls etc. with data from the db. (eg. a user settings form)
  • a dialog window with a UnitOfWork used to populate user controls. (eg. a permissions screen)

The resolutions that I can think of aren't ideal. Keep in mind that I can't copy objects across sessions/units of work in XPO (as far as I can tell).

  1. I don't want to just create the the persistent objects in the dialog and commit them with the dialog's unit of work, because then the user can't cancel out of the form without making changes (unless I went back to the DB and deleted the object persisted in the dialog)

  2. Forcing all of the dialogs in the software to take a reference to a unit of work in the constructor smells terrible.

  3. Having to re-create objects in the form that were created in the dialog smells terrible as well.

what else can I do?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

段念尘 2024-09-02 01:31:20

这是一个迟到的答案,但可能对其他人有帮助:
问题的解决方案是使用 嵌套工作单元

This is a late answer, but may help others:
The solution to your problem is to use a Nested Units of Work.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文