using Microsoft.EntityFrameworkCore; using xDataService.Configuration; namespace xDataService.Db { /// /// Provide an abstraction layout arround DBContext ... /// Only Used on EFCore ... /// public abstract class XDbContext : DbContext { private readonly XDataServiceConfiguration config; // #region Entities ... // // Register Default and Base Entities ... #endregion // // Constructor ... public XDbContext ( DbContextOptions options, XDataServiceConfiguration config ) : base (options) { // try { Database.EnsureCreated (); Database.Migrate (); } catch { } this.config = config; } // // Prepare Fluent API ... protected override void OnModelCreating (ModelBuilder modelBuilder) { // OnXModelCreating (modelBuilder); // // Since this class inherit from Identity Db Context, // we have to pass this to Building Identity Models ... base.OnModelCreating (modelBuilder); } // public abstract void OnXModelCreating (ModelBuilder modelBuilder); // // Prepare Configuring ... protected override void OnConfiguring (DbContextOptionsBuilder optionsBuilder) { // if (config.EnableDetailedErrors) { optionsBuilder.EnableDetailedErrors (); } // if (config.EnableSensitiveDataLogging) { optionsBuilder.EnableSensitiveDataLogging (); } // if (config.EnableTracking) { optionsBuilder.UseQueryTrackingBehavior (QueryTrackingBehavior.TrackAll); } else { optionsBuilder.UseQueryTrackingBehavior (QueryTrackingBehavior.NoTracking); } // OnXConfiguring (optionsBuilder); // base.OnConfiguring (optionsBuilder); } // public abstract void OnXConfiguring (DbContextOptionsBuilder optionsBuilder); } }