O que é uma unidade de trabalho em relação aos objetos de banco de dados?
-
18-09-2019 - |
Pergunta
Em termos leigos, o que é uma unidade de trabalho em relação aos objetos de banco de dados? Estou pesquisando como converter tabelas de banco de dados para classes C # e eu freqüentemente deparamos com esse termo, mas toda a gente parece descrevê-lo como se você já deve saber o que é.
Solução
Eu vou Citação Martin Fowler aqui, desde que eu acho que o seu significado é uma das mais claras , mais compreensível que eu vi:
A Unidade de Trabalho mantém o controle de tudo que você faz durante uma transação comercial que pode afetar o banco de dados. Quando estiver pronto, ele descobre tudo o que precisa ser feito para alterar o banco de dados como resultado de seu trabalho.
Outras dicas
Basicamente, isso significa o trabalho necessário para concluir uma ação atômica, por exemplo, transferência de dinheiro entre duas contas correntes.
Exemplo (em pseudocódigo)
Procedure TransferBetweenAccounts(Amount, Account source, Account target)
Begin Transaction
Debit source account By (Amount) }----Unit of
Credit target account By (amount) }----Work
End Transaction
If Transaction Failed
Roll Back
Um bom artigo MSDN descrevendo Unidade de Trabalho e Persistence Ignorance é aqui: http://msdn.microsoft.com/en-us/magazine/dd882510. aspx
Em LINQ to SQL uma unidade de trabalho é definido como ( http: / /msdn.microsoft.com/en-us/library/bb546187.aspx ):
Uma instância de um contexto de dados deve têm uma vida útil de uma "unidade de trabalho." Em um ambiente fracamente acoplado, um unidade de trabalho é tipicamente pequeno, talvez uma transação otimista, incluindo uma única chamada para Enviar alterações. Portanto, os dados contexto é criado e dispostas em escopo do método. Se a unidade de trabalho inclui chamadas para regras de negócio lógica, então geralmente você vai querer manter a instância DataContext para que toda a operação
Compreender a unidade de trabalho é importante para o sucesso com LINQ to SQL. Ter um olhar para esta página (cenário de atualização A), para a forma como a unidade de ajustes padrão de trabalho em LINQ to SQL:
http://aspalliance.com/1414_LINQ_to_SQL_Part_4__Updating_our_Database.3
Patterns of Enterprise Architecture livro de Martin Fowler tem algumas páginas dedicadas ao tema (pg 184-194). Sua definição breve é:
"Mantém uma lista de objetos afetados por uma transação de negócios e coordena a escrever fora de mudanças ea resolução de concorrência problemas ".