Qu'est-ce qu'une unité de travail en ce qui concerne les objets de base de données?
-
18-09-2019 - |
Question
En termes simples, ce qui est une unité de travail en ce qui concerne les objets de base de données? Je fais des recherches comment convertir les tables de base de données en classes C # et je viens souvent dans ce terme, mais tout le monde semble le décrire comme si vous savez déjà ce ce qu'elle est.
La solution
Je vais citer Martin Fowler ici, car je pense que son sens est l'un des plus clairs , plus compréhensible que j'ai vu:
Une unité de travail garde la trace de tout ce que vous faites au cours d'une transaction commerciale qui peut affecter la base de données. Lorsque vous avez terminé, il figure tout ce qui doit être fait pour modifier la base de données à la suite de votre travail.
Autres conseils
Fondamentalement, cela signifie que le travail requis pour compléter une action atomique, par exemple, transférer de l'argent entre deux comptes chèques.
Exemple (en pseudocode)
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
Un bon article MSDN décrivant Unité de travail L'ignorance et la persistance est ici: http://msdn.microsoft.com/en-us/magazine/dd882510. aspx
LINQ à SQL une unité de travail est défini comme ( http: / /msdn.microsoft.com/en-us/library/bb546187.aspx ):
Une instance d'un contexte de données devrait ont une durée de vie d'une « unité de travail ». Dans un environnement faiblement couplé, un unité de travail est généralement faible, peut-être une transaction optimiste, y compris un appel à Soumettre des changements. Par conséquent, les données contexte est créé et disposé à champ d'application de la méthode. Si l'unité de travail comprend les appels vers des règles commerciales logique, alors vous voulez généralement garder l'instance DataContext pour que ensemble de l'opération
Comprendre l'unité de travail est important pour le succès avec LINQ to SQL. Jetez un oeil à cette page (un scénario de mise à jour), pour savoir comment l'unité de modèle de travail s'inscrit dans LINQ to SQL:
http://aspalliance.com/1414_LINQ_to_SQL_Part_4__Updating_our_Database.3
Martin Fowler Patterns du livre d'architecture d'entreprise a un bon nombre de pages consacrées au sujet (p 184-194). Sa brève définition est:
"Maintient une liste d'objets touchés par une transaction commerciale et coordonne l'écriture sur les changements et la résolution de la concomitance problèmes. "