工作单位问题

时间:2009-01-26 07:40:07

标签: unit-of-work

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

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

如何使用工作单元模式实现此方案? 目前,我在订单输入屏幕上有一个工作单元。我的第一个想法是将儿童形式也纳入这个工作单元。问题是,在子表单中应该保留送货公司的更改。但是,当我坚持对交付公司进行更改时,这也将继续保持订单的变化。

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

2 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

  

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

     

如何使用工作单元模式实现此方案?

  1. OrderEditFormDeliveryCompanyCollectionEditForm应该共享共享相同工作单元的DeliveryCompanyRepository

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

  3. 这样,OrderEditForm中可以使用新的递送公司对象,而无需持续更改。

      

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

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