Table of Contents

Class DbTransactionInterceptor

Namespace
Microsoft.EntityFrameworkCore.Diagnostics
Assembly
Microsoft.EntityFrameworkCore.Relational.dll

Abstract base class for IDbTransactionInterceptor for use when implementing a subset of the interface methods.

public abstract class DbTransactionInterceptor : IDbTransactionInterceptor, IInterceptor
Inheritance
DbTransactionInterceptor
Implements
IInterceptor
Inherited Members

Constructors

DbTransactionInterceptor()

protected DbTransactionInterceptor()

Methods

CreatedSavepoint(DbTransaction, TransactionEventData)

public virtual void CreatedSavepoint(DbTransaction transaction, TransactionEventData eventData)

Parameters

transaction DbTransaction
eventData TransactionEventData

CreatedSavepointAsync(DbTransaction, TransactionEventData, CancellationToken)

public virtual Task CreatedSavepointAsync(DbTransaction transaction, TransactionEventData eventData, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction
eventData TransactionEventData
cancellationToken CancellationToken

Returns

Task

CreatingSavepoint(DbTransaction, TransactionEventData, InterceptionResult)

public virtual InterceptionResult CreatingSavepoint(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result)

Parameters

transaction DbTransaction
eventData TransactionEventData
result InterceptionResult

Returns

InterceptionResult

CreatingSavepointAsync(DbTransaction, TransactionEventData, InterceptionResult, CancellationToken)

public virtual ValueTask<InterceptionResult> CreatingSavepointAsync(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction
eventData TransactionEventData
result InterceptionResult
cancellationToken CancellationToken

Returns

ValueTask<InterceptionResult>

ReleasedSavepoint(DbTransaction, TransactionEventData)

public virtual void ReleasedSavepoint(DbTransaction transaction, TransactionEventData eventData)

Parameters

transaction DbTransaction
eventData TransactionEventData

ReleasedSavepointAsync(DbTransaction, TransactionEventData, CancellationToken)

public virtual Task ReleasedSavepointAsync(DbTransaction transaction, TransactionEventData eventData, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction
eventData TransactionEventData
cancellationToken CancellationToken

Returns

Task

ReleasingSavepoint(DbTransaction, TransactionEventData, InterceptionResult)

public virtual InterceptionResult ReleasingSavepoint(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result)

Parameters

transaction DbTransaction
eventData TransactionEventData
result InterceptionResult

Returns

InterceptionResult

ReleasingSavepointAsync(DbTransaction, TransactionEventData, InterceptionResult, CancellationToken)

public virtual ValueTask<InterceptionResult> ReleasingSavepointAsync(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction
eventData TransactionEventData
result InterceptionResult
cancellationToken CancellationToken

Returns

ValueTask<InterceptionResult>

RolledBackToSavepoint(DbTransaction, TransactionEventData)

public virtual void RolledBackToSavepoint(DbTransaction transaction, TransactionEventData eventData)

Parameters

transaction DbTransaction
eventData TransactionEventData

RolledBackToSavepointAsync(DbTransaction, TransactionEventData, CancellationToken)

public virtual Task RolledBackToSavepointAsync(DbTransaction transaction, TransactionEventData eventData, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction
eventData TransactionEventData
cancellationToken CancellationToken

Returns

Task

RollingBackToSavepoint(DbTransaction, TransactionEventData, InterceptionResult)

public virtual InterceptionResult RollingBackToSavepoint(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result)

Parameters

transaction DbTransaction
eventData TransactionEventData
result InterceptionResult

Returns

InterceptionResult

RollingBackToSavepointAsync(DbTransaction, TransactionEventData, InterceptionResult, CancellationToken)

public virtual ValueTask<InterceptionResult> RollingBackToSavepointAsync(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction
eventData TransactionEventData
result InterceptionResult
cancellationToken CancellationToken

Returns

ValueTask<InterceptionResult>

TransactionCommitted(DbTransaction, TransactionEndEventData)

Called immediately after EF calls Commit().

public virtual void TransactionCommitted(DbTransaction transaction, TransactionEndEventData eventData)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEndEventData

Contextual information about connection and transaction.

TransactionCommittedAsync(DbTransaction, TransactionEndEventData, CancellationToken)

Called immediately after EF calls CommitAsync(CancellationToken).

public virtual Task TransactionCommittedAsync(DbTransaction transaction, TransactionEndEventData eventData, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEndEventData

Contextual information about connection and transaction.

cancellationToken CancellationToken

The cancellation token.

Returns

Task

A Task representing the asynchronous operation.

TransactionCommitting(DbTransaction, TransactionEventData, InterceptionResult)

Called just before EF intends to call Commit().

public virtual InterceptionResult TransactionCommitting(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEventData

Contextual information about connection and transaction.

result InterceptionResult

Represents the current result if one exists. This value will have Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed set to true if some previous interceptor suppressed execution by calling Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.Suppress. This value is typically used as the return value for the implementation of this method.

Returns

InterceptionResult

If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is false, the EF will continue as normal. If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is true, then EF will suppress the operation it was about to perform. A normal implementation of this method for any interceptor that is not attempting to suppress the operation is to return the result value passed in.

TransactionCommittingAsync(DbTransaction, TransactionEventData, InterceptionResult, CancellationToken)

Called just before EF intends to call CommitAsync(CancellationToken).

public virtual ValueTask<InterceptionResult> TransactionCommittingAsync(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEventData

Contextual information about connection and transaction.

result InterceptionResult

Represents the current result if one exists. This value will have Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed set to true if some previous interceptor suppressed execution by calling Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.Suppress. This value is typically used as the return value for the implementation of this method.

cancellationToken CancellationToken

The cancellation token.

Returns

ValueTask<InterceptionResult>

If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is false, the EF will continue as normal. If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is true, then EF will suppress the operation it was about to perform. A normal implementation of this method for any interceptor that is not attempting to suppress the operation is to return the result value passed in.

TransactionFailed(DbTransaction, TransactionErrorEventData)

Called when use of a DbTransaction has failed with an exception.

public virtual void TransactionFailed(DbTransaction transaction, TransactionErrorEventData eventData)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionErrorEventData

Contextual information about connection and transaction.

TransactionFailedAsync(DbTransaction, TransactionErrorEventData, CancellationToken)

Called when use of a DbTransaction has failed with an exception.

public virtual Task TransactionFailedAsync(DbTransaction transaction, TransactionErrorEventData eventData, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionErrorEventData

Contextual information about connection and transaction.

cancellationToken CancellationToken

The cancellation token.

Returns

Task

A Task representing the asynchronous operation.

TransactionRolledBack(DbTransaction, TransactionEndEventData)

Called immediately after EF calls Rollback().

public virtual void TransactionRolledBack(DbTransaction transaction, TransactionEndEventData eventData)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEndEventData

Contextual information about connection and transaction.

TransactionRolledBackAsync(DbTransaction, TransactionEndEventData, CancellationToken)

Called immediately after EF calls RollbackAsync(CancellationToken).

public virtual Task TransactionRolledBackAsync(DbTransaction transaction, TransactionEndEventData eventData, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEndEventData

Contextual information about connection and transaction.

cancellationToken CancellationToken

The cancellation token.

Returns

Task

A Task representing the asynchronous operation.

TransactionRollingBack(DbTransaction, TransactionEventData, InterceptionResult)

Called just before EF intends to call Rollback().

public virtual InterceptionResult TransactionRollingBack(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEventData

Contextual information about connection and transaction.

result InterceptionResult

Represents the current result if one exists. This value will have Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed set to true if some previous interceptor suppressed execution by calling Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.Suppress. This value is typically used as the return value for the implementation of this method.

Returns

InterceptionResult

If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is false, the EF will continue as normal. If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is true, then EF will suppress the operation it was about to perform. A normal implementation of this method for any interceptor that is not attempting to suppress the operation is to return the result value passed in.

TransactionRollingBackAsync(DbTransaction, TransactionEventData, InterceptionResult, CancellationToken)

Called just before EF intends to call RollbackAsync(CancellationToken).

public virtual ValueTask<InterceptionResult> TransactionRollingBackAsync(DbTransaction transaction, TransactionEventData eventData, InterceptionResult result, CancellationToken cancellationToken = default)

Parameters

transaction DbTransaction

The transaction.

eventData TransactionEventData

Contextual information about connection and transaction.

result InterceptionResult

Represents the current result if one exists. This value will have Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed set to true if some previous interceptor suppressed execution by calling Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.Suppress. This value is typically used as the return value for the implementation of this method.

cancellationToken CancellationToken

The cancellation token.

Returns

ValueTask<InterceptionResult>

If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is false, the EF will continue as normal. If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult.IsSuppressed is true, then EF will suppress the operation it was about to perform. A normal implementation of this method for any interceptor that is not attempting to suppress the operation is to return the result value passed in.

TransactionStarted(DbConnection, TransactionEndEventData, DbTransaction)

Called immediately after EF calls BeginTransaction(IsolationLevel).

This method is still called if an interceptor suppressed creation in TransactionStarting(DbConnection, TransactionStartingEventData, InterceptionResult<DbTransaction>). In this case, result is the result returned by TransactionStarting(DbConnection, TransactionStartingEventData, InterceptionResult<DbTransaction>).

public virtual DbTransaction TransactionStarted(DbConnection connection, TransactionEndEventData eventData, DbTransaction result)

Parameters

connection DbConnection

The connection.

eventData TransactionEndEventData

Contextual information about connection and transaction.

result DbTransaction

The result of the call to BeginTransaction(IsolationLevel). This value is typically used as the return value for the implementation of this method.

Returns

DbTransaction

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 result value passed in.

TransactionStartedAsync(DbConnection, TransactionEndEventData, DbTransaction, CancellationToken)

public virtual ValueTask<DbTransaction> TransactionStartedAsync(DbConnection connection, TransactionEndEventData eventData, DbTransaction result, CancellationToken cancellationToken = default)

Parameters

connection DbConnection

The connection.

eventData TransactionEndEventData

Contextual information about connection and transaction.

result DbTransaction

The result of the call to BeginTransactionAsync(IsolationLevel, CancellationToken). This value is typically used as the return value for the implementation of this method.

cancellationToken CancellationToken

The cancellation token.

Returns

ValueTask<DbTransaction>

A 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 result value passed in, often using FromResult<TResult>(TResult)

TransactionStarting(DbConnection, TransactionStartingEventData, InterceptionResult<DbTransaction>)

Called just before EF intends to call BeginTransaction(IsolationLevel).

public virtual InterceptionResult<DbTransaction> TransactionStarting(DbConnection connection, TransactionStartingEventData eventData, InterceptionResult<DbTransaction> result)

Parameters

connection DbConnection

The connection.

eventData TransactionStartingEventData

Contextual information about connection and transaction.

result InterceptionResult<DbTransaction>

Represents the current result if one exists. This value will have Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.HasResult set to true if some previous interceptor suppressed execution by calling Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.SuppressWithResult(`0). This value is typically used as the return value for the implementation of this method.

Returns

InterceptionResult<DbTransaction>

If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.HasResult is false, the EF will continue as normal. If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.HasResult is true, then EF will suppress the operation it was about to perform and use Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.Result instead. A normal implementation of this method for any interceptor that is not attempting to change the result is to return the result value passed in, often using FromResult<TResult>(TResult)

TransactionStartingAsync(DbConnection, TransactionStartingEventData, InterceptionResult<DbTransaction>, CancellationToken)

Called just before EF intends to call BeginTransactionAsync(IsolationLevel, CancellationToken).

public virtual ValueTask<InterceptionResult<DbTransaction>> TransactionStartingAsync(DbConnection connection, TransactionStartingEventData eventData, InterceptionResult<DbTransaction> result, CancellationToken cancellationToken = default)

Parameters

connection DbConnection

The connection.

eventData TransactionStartingEventData

Contextual information about connection and transaction.

result InterceptionResult<DbTransaction>

Represents the current result if one exists. This value will have Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.HasResult set to true if some previous interceptor suppressed execution by calling Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.SuppressWithResult(`0). This value is typically used as the return value for the implementation of this method.

cancellationToken CancellationToken

The cancellation token.

Returns

ValueTask<InterceptionResult<DbTransaction>>

If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.HasResult is false, the EF will continue as normal. If Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.HasResult is true, then EF will suppress the operation it was about to perform and use Microsoft.EntityFrameworkCore.Diagnostics.InterceptionResult`1.Result instead. A normal implementation of this method for any interceptor that is not attempting to change the result is to return the result value passed in, often using FromResult<TResult>(TResult)

TransactionUsed(DbConnection, TransactionEventData, DbTransaction)

Called immediately after RelationalDatabaseFacadeExtensions.UseTransaction is called.

public virtual DbTransaction TransactionUsed(DbConnection connection, TransactionEventData eventData, DbTransaction result)

Parameters

connection DbConnection

The connection.

eventData TransactionEventData

Contextual information about connection and transaction.

result DbTransaction

The DbTransaction that was passed to RelationalDatabaseFacadeExtensions.UseTransaction. This value is typically used as the return value for the implementation of this method.

Returns

DbTransaction

The value that will be used as the effective value passed to RelationalDatabaseFacadeExtensions.UseTransaction A normal implementation of this method for any interceptor that is not attempting to change the result is to return the result value passed in.

TransactionUsedAsync(DbConnection, TransactionEventData, DbTransaction, CancellationToken)

Called immediately after RelationalDatabaseFacadeExtensions.UseTransactionAsync is called.

public virtual ValueTask<DbTransaction> TransactionUsedAsync(DbConnection connection, TransactionEventData eventData, DbTransaction result, CancellationToken cancellationToken = default)

Parameters

connection DbConnection

The connection.

eventData TransactionEventData

Contextual information about connection and transaction.

result DbTransaction

The DbTransaction that was passed to RelationalDatabaseFacadeExtensions.UseTransactionAsync. This value is typically used as the return value for the implementation of this method.

cancellationToken CancellationToken

The cancellation token.

Returns

ValueTask<DbTransaction>

A Task containing the value that will be used as the effective value passed to RelationalDatabaseFacadeExtensions.UseTransactionAsync A normal implementation of this method for any interceptor that is not attempting to change the result is to return the result value passed in, often using FromResult<TResult>(TResult)