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 () { return await DbContext.SaveChangesAsync (); } public void Dispose () { DbContext.Dispose (); } } }