Pergunta

Como devo utilizar a unidade de padrão de trabalho no seguinte cenário:

Eu estou escrevendo um aplicativo winforms. Eu tenho uma tela onde o usuário pode editar uma única ordem. Nesta tela, o usuário pode abrir uma outra forma para selecionar a empresa de entrega. O usuário também pode adicionar / editar empresas de entrega existentes neste formulário filho antes de fazer a seleção.

Como posso implementar este cenário utilizando a Unidade de padrão de trabalho? Atualmente tenho uma unidade de trabalho para a tela de entrada do pedido. Meu primeiro pensamento foi para incluir o formulário de criança nesta unidade de trabalho também. O problema é que as mudanças empresa de entrega deve ser mantida quando na forma filho. Mas quando eu manter as alterações às empresas de entrega, isso também irá persistir as mudanças na ordem.

Devo criar uma segunda unidade de trabalho para todas as edições para as empresas de entrega? Nesse caso, como eu posso fazer as mudanças em que unidade de trabalho visível na primeira unidade de trabalho?

Foi útil?

Solução

De sua descrição soa como se você realmente tem duas unidades de trabalho aqui. O primeiro é "Order Entry" eo segundo é "Editar Entrega Company". Cada unidade de trabalho tem algum tipo subjacente da sessão ou transação. Para comunicar a partir do formulário filho para a entrada de ordem que você vai ter que retirar o objeto da empresa de sessão do formulário filho de um re-anexá-lo ao pai. Como implementar na verdade isso depende da camada de acesso a dados que você está usando, mas uma maneira fácil é passar ao redor do ID da empresa.

Outras dicas

Atualmente tenho uma unidade de trabalho para a tela de entrada do pedido. O problema é que as mudanças empresa de entrega deve ser mantida quando na forma filho.

Como posso implementar este cenário utilizando a Unidade de trabalho padrão?

  1. OrderEditForm e DeliveryCompanyCollectionEditForm devem compartilhar o mesmo DeliveryCompanyRepository que compartilha a mesma unidade de trabalho.

  2. DeliveryCompanyRepository deve retornar empresas de + empresas de banco de dados que foram adicionados durante a unidade de trabalho.

Desta forma, um novo objeto de empresa de entrega deve estar disponível em OrderEditForm sem persistindo alterações.

Devo criar uma segunda unidade de trabalho para todas as edições para as empresas de entrega? Nesse caso, como eu posso fazer as mudanças em que unidade de trabalho visível na primeira unidade de trabalho?

Dois ou mais unidades de trabalho usados ??em paralelo requerem atenção especial na sincronização de dados. Quando uma unidade de commits de trabalho, alguns mediador normalmente atualiza todas as outras unidades de trabalho, como já foi dito na outra resposta.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top