using Microsoft.EntityFrameworkCore.Storage; using StoreService.Database.Entities; namespace StoreService.Repositories; /// /// Unit of work pattern abstraction encapsulating repositories and transactions. /// public interface IUnitOfWork : IAsyncDisposable, IDisposable { #region Repositories IGenericRepository StoreCategories { get; } IGenericRepository StoreItems { get; } IGenericRepository StoreDiscounts { get; } IGenericRepository StoreDiscountItems { get; } IGenericRepository StoreOrders { get; } IGenericRepository StoreOrderItems { get; } IGenericRepository StoreOrderItemDiscounts { get; } #endregion #region Save bool SaveChanges(); Task SaveChangesAsync(CancellationToken ct = default); #endregion #region Transactions Task BeginTransactionAsync(CancellationToken ct = default); Task CommitTransactionAsync(CancellationToken ct = default); Task RollbackTransactionAsync(CancellationToken ct = default); #endregion }