using Microsoft.EntityFrameworkCore; using BasicDotnetTemplate.MainProject.Models.Database.SqlServer; namespace BasicDotnetTemplate.MainProject.Core.Database { public class SqlServerContext : DbContext { private const string _isDeletedFalse = "[IsDeleted] = 0"; private const string _isEnabled = "[Enabled] = 1"; public SqlServerContext(DbContextOptions options) : base(options) { } public DbSet PermissionModules { get; set; } public DbSet PermissionOperations { get; set; } public DbSet PermissionSystems { get; set; } public DbSet PermissionSystemModules { get; set; } public DbSet PermissionSystemModuleOperations { get; set; } public DbSet RolePermissionSystemModuleOperations { get; set; } public DbSet Roles { get; set; } public DbSet Users { get; set; } protected override void OnModelCreating(ModelBuilder modelBuilder) { #region "INDEXES" // Indexes modelBuilder.Entity() .HasIndex(x => x.Email, "IX_Email"); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted, x.Guid }, "IX_IsDeleted_Guid") .HasFilter(_isDeletedFalse); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted, x.Guid }, "IX_IsDeleted_Guid") .HasFilter(_isDeletedFalse); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted }, "IX_IsDeleted") .HasFilter(_isDeletedFalse); modelBuilder.Entity() .HasIndex(x => new { x.Enabled }, "IX_Enabled") .HasFilter(_isEnabled); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted, x.Name, x.Enabled }, "IX_IsDeleted_Name_Enabled") .HasFilter(_isEnabled) .HasFilter(_isDeletedFalse); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted }, "IX_IsDeleted") .HasFilter(_isDeletedFalse); modelBuilder.Entity() .HasIndex(x => new { x.Enabled }, "IX_Enabled") .HasFilter(_isEnabled); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted, x.Name, x.Enabled }, "IX_IsDeleted_Name_Enabled") .HasFilter(_isEnabled) .HasFilter(_isDeletedFalse); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted, x.Name }, "IX_IsDeleted_Name"); modelBuilder.Entity() .HasIndex(x => new { x.IsDeleted, x.Enabled, x.Guid }, "IX_IsDeleted_Enabled_Guid"); #endregion } } }