/// <summary> /// <para> /// Called immediately after EF calls <see cref="DbConnection.BeginTransaction(IsolationLevel)" />. /// </para> /// <para> /// This method is still called if an interceptor suppressed creation in <see cref="IDbTransactionInterceptor.TransactionStarting" />. /// In this case, <paramref name="result" /> is the result returned by <see cref="IDbTransactionInterceptor.TransactionStarting" />. /// </para> /// </summary> /// <param name="connection"> The connection. </param> /// <param name="eventData"> Contextual information about connection and transaction. </param> /// <param name="result"> /// The result of the call to <see cref="DbConnection.BeginTransaction(IsolationLevel)" />. /// This value is typically used as the return value for the implementation of this method. /// </param> /// <returns> /// The result that EF will use. /// A normal implementation of this method for any interceptor that is not attempting to change the result /// is to return the <paramref name="result" /> value passed in. /// </returns> public virtual DbTransaction TransactionStarted( DbConnection connection, TransactionEndEventData eventData, DbTransaction result) => result;
/// <summary> /// Called immediately after EF calls <see cref="DbTransaction.RollbackAsync(CancellationToken)" />. /// </summary> /// <param name="transaction"> The transaction. </param> /// <param name="eventData"> Contextual information about connection and transaction. </param> /// <param name="cancellationToken"> The cancellation token. </param> /// <returns> A <see cref="Task" /> representing the asynchronous operation. </returns> public virtual Task TransactionRolledBackAsync( DbTransaction transaction, TransactionEndEventData eventData, CancellationToken cancellationToken = default) => Task.CompletedTask;
/// <summary> /// Called immediately after EF calls <see cref="DbTransaction.Commit" />. /// </summary> /// <param name="transaction"> The transaction. </param> /// <param name="eventData"> Contextual information about connection and transaction. </param> public virtual void TransactionCommitted( DbTransaction transaction, TransactionEndEventData eventData) { }
/// <summary> /// Called immediately after EF calls <see cref="DbTransaction.Rollback()" />. /// </summary> /// <param name="transaction"> The transaction. </param> /// <param name="eventData"> Contextual information about connection and transaction. </param> public virtual void TransactionRolledBack( DbTransaction transaction, TransactionEndEventData eventData) { }
/// <summary> /// <para> /// Called immediately after EF calls /// <see cref="M:System.Data.Common.DbConnection.BeginTransactionAsync(System.Data.IsolationLevel,System.Threading.CancellationToken)" /> /// . /// </para> /// <para> /// This method is still called if an interceptor suppressed creation in <see cref="IDbTransactionInterceptor.TransactionStarting" />. /// In this case, <paramref name="result" /> is the result returned by <see cref="IDbTransactionInterceptor.TransactionStarting" />. /// </para> /// </summary> /// <param name="connection"> The connection. </param> /// <param name="eventData"> Contextual information about connection and transaction. </param> /// <param name="result"> /// The result of the call to /// <see cref="M:System.Data.Common.DbConnection.BeginTransactionAsync(System.Data.IsolationLevel,System.Threading.CancellationToken)" />. /// This value is typically used as the return value for the implementation of this method. /// </param> /// <param name="cancellationToken"> The cancellation token. </param> /// <returns> /// A <see cref="Task" /> providing the result that EF will use. /// A normal implementation of this method for any interceptor that is not attempting to change the result /// is to return the <paramref name="result" /> value passed in, often using <see cref="Task.FromResult{TResult}" /> /// </returns> public virtual ValueTask <DbTransaction> TransactionStartedAsync( DbConnection connection, TransactionEndEventData eventData, DbTransaction result, CancellationToken cancellationToken = default) => new ValueTask <DbTransaction>(result);