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 é.

Foi útil?

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 ".

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