¿Qué es una unidad de trabajo en lo que respecta a los objetos de base de datos?
-
18-09-2019 - |
Pregunta
En términos sencillos, lo que es una unidad de trabajo en lo que respecta a los objetos de base de datos? Estoy investigando cómo convertir las tablas de bases de datos en clases de C # y con frecuencia me encuentro con este término, pero todo el mundo parece describirlo como si ya debe saber lo que es.
Solución
Martin Fowler aquí, ya que creo que su significado es uno de los más claros , más comprensible que he visto:
Una unidad de trabajo realiza un seguimiento de todo lo que haces durante una transacción comercial que puede afectar a la base de datos. Cuando haya terminado, se da cuenta de todo lo que hay que hacer para alterar la base de datos como resultado de su trabajo.
Otros consejos
Básicamente esto significa que el trabajo necesario para completar una acción atómica, por ejemplo, la transferencia de dinero entre dos cuentas corrientes.
Ejemplo (en 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
Un buen artículo de MSDN que describe Unidad de Trabajo e ignorancia de la persistencia es aquí: http://msdn.microsoft.com/en-us/magazine/dd882510. aspx
En LINQ a SQL una unidad de trabajo se define como ( http: / /msdn.microsoft.com/en-us/library/bb546187.aspx ):
Una instancia de un contexto de datos debe tienen un tiempo de vida de una "unidad de trabajo". En un entorno de acoplamiento flexible, una unidad de trabajo es típicamente pequeño, quizás una transacción optimista, incluyendo una sola llamada a Presentar cambios. Por lo tanto, los datos contexto es creado y dispuesta en ámbito de método. Si la unidad de trabajo incluye llamadas a las reglas de negocio lógica, entonces por lo general tendrá que mantener la instancia DataContext para ese toda la operación
La comprensión de la unidad de trabajo es importante para el éxito con LINQ a SQL. Echar un vistazo a esta página (Un escenario de actualización), por la forma en la unidad del patrón de trabajo encaja en LINQ a SQL:
http://aspalliance.com/1414_LINQ_to_SQL_Part_4__Updating_our_Database.3
Los patrones de libro de arquitectura de la empresade Martin Fowler tiene bastantes páginas dedicadas al tema (pág 184-194). Su breve definición es:
"Mantiene una lista de objetos afectados por una transacción de negocios y coordina la redacción de los cambios y la resolución de concurrencia problemas ".