我应该如何在以下场景中使用工作单元模式:
我正在写一个winforms应用程序。 我有一个屏幕,用户可以在其中编辑单个订单。 在此屏幕上,用户可以打开另一个表单来选择交付公司。在进行选择之前,用户还可以在此子表单中添加/编辑现有的递送公司。
如何使用工作单元模式实现此方案? 目前,我在订单输入屏幕上有一个工作单元。我的第一个想法是将儿童形式也纳入这个工作单元。问题是,在子表单中应该保留送货公司的更改。但是,当我坚持对交付公司进行更改时,这也将继续保持订单的变化。
我是否应该为交付公司的任何编辑创建第二个工作单元?在这种情况下,如何在第一个工作单元中显示该工作单元中的更改?
答案 0 :(得分:1)
从你的描述中,听起来好像你真的有两个工作单位。第一个是“订单输入”,第二个是“编辑交付公司”。每个工作单元都有一些基础类型的会话或事务。要从子表单到订单输入进行通信,您必须将公司的对象与子表单的会话分离,然后将其重新附加到父表单。如何实际实现这取决于您正在使用的数据访问层,但一种简单的方法是传递公司的ID。
答案 1 :(得分:0)
目前我在订单输入屏幕上有一个工作单元。问题是,在子表单中应该保留送货公司的更改。
如何使用工作单元模式实现此方案?
OrderEditForm
和DeliveryCompanyCollectionEditForm
应该共享共享相同工作单元的DeliveryCompanyRepository
。
DeliveryCompanyRepository
应该从工作单位中添加的数据库+公司返回公司。
这样,OrderEditForm
中可以使用新的递送公司对象,而无需持续更改。
我是否应该为交付公司的任何编辑创建第二个工作单元?在这种情况下,如何在第一个工作单元中显示该工作单元中的更改?
并行使用的两个或多个工作单元在数据同步中需要特别注意。当一个工作单元提交时,一些调解员通常会更新所有其他工作单元,如另一个答案中所述。