2

在以下场景中我应该如何使用工作单元模式:

我正在编写一个 winforms 应用程序。我有一个屏幕,用户可以在其中编辑单个订单。在这个屏幕上,用户可以打开另一个表格来选择送货公司。用户还可以在选择之前在此子表单中添加/编辑现有的送货公司。

如何使用工作单元模式来实现这个场景?目前我有一个订单输入屏幕的工作单元。我的第一个想法是在这个工作单元中也包含子表单。问题是,送货公司的更改应该在子表单中保持不变。但是当我持久化对快递公司的更改时,这也会持久化订单中的更改。

我应该为交付公司的任何编辑创建第二个工作单元吗?在这种情况下,如何使该工作单元中的更改在第一个工作单元中可见?

4

2 回答 2

1

根据您的描述,听起来好像您真的在这里有两个工作单元。第一个是“Order Entry”,第二个是“Edit Delivery Company”。每个工作单元都有某种基础类型的会话或事务。要从子表单与订单条目进行通信,您必须将公司对象从子表单的会话中分离出来,然后将其重新附加到父表单。如何实际实现这取决于您使用的数据访问层,但一种简单的方法是传递公司的 ID。

于 2009-01-26T07:46:52.440 回答
0

目前我有一个订单输入屏幕的工作单元。问题是,送货公司的更改应该在子表单中保持不变。

如何使用工作单元模式来实现这个场景?

  1. OrderEditForm并且DeliveryCompanyCollectionEditForm应该共享同DeliveryCompanyRepository一个工作单元。

  2. DeliveryCompanyRepository应该从数据库中返回公司+在工作单元中添加的公司。

这样,一个新的交付公司对象应该可以在OrderEditForm没有持久更改的情况下使用。

我应该为交付公司的任何编辑创建第二个工作单元吗?在这种情况下,如何使该工作单元中的更改在第一个工作单元中可见?

并行使用的两个或多个工作单元在数据同步中需要特别注意。当一个工作单元提交时,一些调解器通常会更新所有其他工作单元,如另一个答案中所述。

于 2015-03-07T16:51:07.477 回答