using BuildingBlocks.Core.Event; using Microsoft.EntityFrameworkCore; namespace BuildingBlocks.EFCore; using Microsoft.EntityFrameworkCore.Storage; public interface IDbContext { DbSet Set() where TEntity : class; IReadOnlyList GetDomainEvents(); Task SaveChangesAsync(CancellationToken cancellationToken = default); Task BeginTransactionAsync(CancellationToken cancellationToken = default); Task CommitTransactionAsync(CancellationToken cancellationToken = default); Task RollbackTransactionAsync(CancellationToken cancellationToken = default); IExecutionStrategy CreateExecutionStrategy(); Task ExecuteTransactionalAsync(CancellationToken cancellationToken = default); }