/// <summary> /// Initializes a new instance of the <see cref="UnitOfWork"/> class. /// Inicia uma unidade de trabalho de persistência. Somente chamar dentro de using(). /// </summary> public UnitOfWork() { uow = this; }
/// <summary> /// Performs application-defined tasks associated with freeing, releasing, or resetting unmanaged resources. /// </summary> /// <filterpriority>2</filterpriority> public void Dispose() { // Se não fizemos commit da unidade de trabalho damos rollback if (!this.committed) { if (this.OnRollback != null) { this.OnRollback(); } else { // A perda de dados só ocorre se registramos um datacontext, que irá escutar o OnConsolidate. if (!TestMode && !ReadOnlyContext.InProgress && this.OnConsolidate != null) { throw new Exception( "Unidade de trabalho foi eliminada sem commit e não há handlers de Rollback. Possível perda de dados iminente."); } } } uow = null; if (this.OnDispose != null) { this.OnDispose(); } else { // A inconsistencia no tratamento de unidades de trabalho só ocorre se registramos um datacontext, que irá escutar o OnConsolidate. if (!TestMode && !ReadOnlyContext.InProgress && this.OnConsolidate != null) { throw new Exception( "Unidade de trabalho foi eliminada mas não há handlers de Dispose. Possível inconsistência no tratamento de futuras unidades de trabalho nesta mesma Thread."); } } }