using System.Threading.Tasks;
public interface IDbContext {
public interface IUnitOfWork<T> where T: IDbContext
public interface IAsyncUnitOfWork: IUnitOfWork<IDbContext>
Task CommitAsync(CancellationToken cancellationToken);
Task BeginTransactionAsync(CancellationToken cancellationToken);
public abstract class AbstractUnitOfWork: IAsyncUnitOfWork
public abstract IDbContext DbContext {get; set; }
public AbstractUnitOfWork(IDbContext context)
public abstract Task BeginTransactionAsync(CancellationToken cancellationToken);
public abstract Task CommitAsync(CancellationToken cancellationToken);
public static void Main()
Console.WriteLine("Hello World");