using Email.Data.Entities; using Microsoft.EntityFrameworkCore; namespace Email.Data; public sealed class EmailDbContext : DbContext { public const string SchemaName = MigrationConstants.SchemaName; public const string MigrationTableName = MigrationConstants.MigrationTableName; public EmailDbContext(DbContextOptions options) : base(options) { } public DbSet Templates => Set(); protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) { base.OnConfiguring(optionsBuilder); // Configure migration history table to use schema-qualified name: [email].[_Migrations] optionsBuilder.UseSqlServer(x => x.MigrationsHistoryTable(MigrationTableName, SchemaName)); } protected override void OnModelCreating(ModelBuilder modelBuilder) { modelBuilder.HasDefaultSchema(SchemaName); modelBuilder.Entity(entity => { entity.ToTable("Templates"); entity.HasKey(x => new { x.Key, x.Language }); entity.Property(x => x.Key).HasMaxLength(128); entity.Property(x => x.Language).HasMaxLength(8); entity.Property(x => x.Value).IsRequired(); entity.Property(x => x.Description).HasMaxLength(500).HasDefaultValue(string.Empty); entity.Property(x => x.UpdatedAt).HasDefaultValueSql("SYSUTCDATETIME()"); entity.Property(x => x.OperatorCopy).HasMaxLength(256).HasDefaultValue(string.Empty); }); } }