Api-PWA/DocuMed.Repository/Models/ApplicationContext.cs

40 lines
1.6 KiB
C#
Raw Normal View History

2023-10-10 17:02:38 +03:30
namespace DocuMed.Repository.Models;
2024-09-28 12:34:36 +03:30
public class ApplicationContext(DbContextOptions<ApplicationContext> options, ILogger<ApplicationContext> logger)
: IdentityDbContext<ApplicationUser, ApplicationRole, Guid>(options)
2023-10-10 17:02:38 +03:30
{
2024-09-28 12:34:36 +03:30
private readonly Assembly _projectAssembly = options.GetExtension<DbContextOptionCustomExtensions>().ProjectAssembly;
2023-10-10 17:02:38 +03:30
protected override void OnModelCreating(ModelBuilder builder)
{
var stopwatch = new Stopwatch();
stopwatch.Start();
base.OnModelCreating(builder);
var entitiesAssembly = _projectAssembly;
2024-09-28 12:34:36 +03:30
builder.RegisterAllEntities<ApiEntity>(logger, entitiesAssembly);
2023-10-10 17:02:38 +03:30
stopwatch.Stop();
2024-09-28 12:34:36 +03:30
logger.LogInformation($"!!!!!!! RegisterAllEntities : {stopwatch.ElapsedMilliseconds}ms !!!!!!!");
2023-10-10 17:02:38 +03:30
RenameIdentityTables(builder);
builder.RegisterEntityTypeConfiguration(entitiesAssembly);
builder.AddPluralizingTableNameConvention();
builder.AddRestrictDeleteBehaviorConvention();
//builder.AddSequentialGuidForIdConvention();
}
protected void RenameIdentityTables(ModelBuilder builder)
{
builder.HasDefaultSchema("public");
builder.Entity<ApplicationUser>().ToTable("Users");
builder.Entity<ApplicationRole>().ToTable("Roles");
builder.Entity<IdentityRoleClaim<Guid>>().ToTable("RoleClaims");
builder.Entity<IdentityUserRole<Guid>>().ToTable("UserRoles");
builder.Entity<IdentityUserClaim<Guid>>().ToTable("Claims");
builder.Entity<IdentityUserLogin<Guid>>().ToTable("Logins");
builder.Entity<IdentityUserToken<Guid>>().ToTable("Tokens");
}
}