Pregunta

¿Cómo debo utilizar el patrón de unidad de trabajo en el siguiente escenario?

Estoy escribiendo una aplicación winforms.Tengo una pantalla donde el usuario puede editar un solo pedido.En esta pantalla, el usuario puede abrir otro formulario para seleccionar la empresa de reparto.El usuario también puede agregar/editar empresas de entrega existentes en este formulario secundario antes de realizar la selección.

¿Cómo puedo implementar este escenario usando el patrón Unidad de trabajo?Actualmente tengo una unidad de trabajo para la pantalla de ingreso de pedidos.Mi primer pensamiento fue incluir también la forma infantil en esta unidad de trabajo.El problema es que los cambios de la empresa de entrega deben persistir en el formulario secundario.Pero cuando persisto en los cambios en las empresas de entrega, esto también persistirá en los cambios en el pedido.

¿Debo crear una segunda unidad de trabajo para cualquier edición en las empresas de entrega?En ese caso, ¿cómo puedo hacer que los cambios en esa unidad de trabajo sean visibles en la primera unidad de trabajo?

¿Fue útil?

Solución

Según su descripción, parece que realmente tiene dos unidades de trabajo aquí. El primero es & Quot; Entrada de orden & Quot; y el segundo es " Editar empresa de entrega " ;. Cada unidad de trabajo tiene algún tipo de sesión o transacción subyacente. Para comunicarse desde el formulario secundario a la entrada del pedido, deberá separar el objeto de la empresa de la sesión del formulario secundario y volver a adjuntarlo al padre. Cómo implementar esto realmente depende de la capa de acceso a datos que esté utilizando, pero una manera fácil es pasar la identificación de la empresa.

Otros consejos

Actualmente tengo una unidad de trabajo para la pantalla de ingreso de pedidos.El problema es que los cambios de la empresa de entrega deben persistir en el formulario secundario.

¿Cómo puedo implementar este escenario usando el patrón Unidad de trabajo?

  1. OrderEditForm y DeliveryCompanyCollectionEditForm debería compartir lo mismo DeliveryCompanyRepository que comparte la misma unidad de trabajo.

  2. DeliveryCompanyRepository debe devolver empresas de la base de datos + empresas que se agregaron durante la unidad de trabajo.

De esta manera debería estar disponible un nuevo objeto de empresa de entrega en OrderEditForm sin cambios persistentes.

¿Debo crear una segunda unidad de trabajo para cualquier edición en las empresas de entrega?En ese caso, ¿cómo puedo hacer que los cambios en esa unidad de trabajo sean visibles en la primera unidad de trabajo?

Dos o más unidades de trabajo utilizadas en paralelo requieren especial atención en la sincronización de datos.Cuando una unidad de trabajo se compromete, algún mediador generalmente actualiza todas las demás unidades de trabajo, como ya se indicó en la otra respuesta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top