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.

¿Fue útil?

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 empresa

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top