Was ist, vereinfacht ausgedrückt, eine Arbeitseinheit in Bezug auf Datenbankobjekte? Ich recherchiere, wie man Datenbanktabellen in C#-Klassen konvertiert, und ich stoße häufig auf diesen Begriff, aber jeder scheint ihn so zu beschreiben, als ob man bereits wissen sollte, was er ist.
Antworten
Zu viele Anzeigen?Ich zitiere Martin Fowler hier, weil ich denke, dass seine Bedeutung eine der klarsten und verständlichsten ist, die ich kenne:
In einer Unit of Work wird alles festgehalten, was Sie während eines Geschäftsvorgangs tun und was sich auf die Datenbank auswirken kann. Wenn Sie fertig sind, wird ermittelt, was alles getan werden muss, um die Datenbank als Ergebnis Ihrer Arbeit zu ändern.
Im Grunde genommen handelt es sich um die Arbeit, die erforderlich ist, um eine atomare Aktion durchzuführen, z. B. eine Überweisung zwischen zwei Girokonten.
Beispiel (in 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
Ein guter MSDN-Artikel, der Folgendes beschreibt Arbeitseinheit und Beharrlichkeit Unwissenheit ist hier: http://msdn.microsoft.com/en-us/magazine/dd882510.aspx
In LINQ to SQL ist eine Arbeitseinheit definiert als ( http://msdn.microsoft.com/en-us/library/bb546187.aspx ):
Eine Instanz eines Datenkontexts sollte eine Lebensdauer von einer "Arbeitseinheit" haben. In einer lose gekoppelten Umgebung kann eine Arbeitseinheit typischerweise klein, vielleicht eine optimistische Transaktion, einschließlich eines einzigen Aufrufs von SubmitChanges. Daher wird der Daten Kontext erstellt und im Methodenumfang. Wenn die Arbeitseinheit Aufrufe zu Geschäftsregeln enthält Logik enthält, dann sollten Sie im Allgemeinen die DataContext-Instanz für die gesamte gesamte Operation
Das Verständnis der Arbeitseinheit ist wichtig für den Erfolg mit LINQ to SQL. Auf dieser Seite (Ein Aktualisierungsszenario) erfahren Sie, wie das Muster der Arbeitseinheit in LINQ to SQL passt:
http://aspalliance.com/1414_LINQ_to_SQL_Part_4__Updating_our_Database.3
In Martin Fowlers Buch Patterns of Enterprise Architecture sind dem Thema einige Seiten gewidmet (S. 184-194). Seine kurze Definition lautet:
"Führt eine Liste von Objekten, die von einer von einem Geschäftsvorgang betroffen sind und koordiniert das Ausschreiben von Änderungen und die Lösung von Gleichzeitigkeitsproblemen Probleme."