using System.Threading; using System.Threading.Tasks; using Microsoft.EntityFrameworkCore; using xDataService.Interfaces; using xModels.Base; namespace xDataService.Db { /// /// Provide Unit Of Works Design Pattern for Db Transactions ... /// Only Used on EFCore ... /// /// public class XUnitOfWorks : IXUnitOfWorks where TDbContext : XDbContext { public TDbContext DbContext { get; } public XUnitOfWorks (TDbContext context) { this.DbContext = context; } public DbSet GetDbSet () where T : XBaseEntity { return DbContext.Set (); } /// /// Save Changes /// public int SaveChanges () { return DbContext.SaveChanges (); } /// /// Save Changes Async /// /// /// public async Task SaveChangesAsync ( CancellationToken cancellationToken = default ) { return await DbContext.SaveChangesAsync (cancellationToken); } public void Dispose () { DbContext.Dispose (); } } }