diff --git a/DbFirst.API/appsettings.json b/DbFirst.API/appsettings.json index c0ba046..ebaa255 100644 --- a/DbFirst.API/appsettings.json +++ b/DbFirst.API/appsettings.json @@ -8,6 +8,18 @@ "http://localhost:5101" ] }, + "TableConfigurations": { + "VwmyCatalog": { + "ViewName": "VWMY_CATALOG", + "GuidColumnName": "GUID", + "CatTitleColumnName": "CAT_TITLE", + "CatStringColumnName": "CAT_STRING", + "AddedWhoColumnName": "ADDED_WHO", + "AddedWhenColumnName": "ADDED_WHEN", + "ChangedWhoColumnName": "CHANGED_WHO", + "ChangedWhenColumnName": "CHANGED_WHEN" + } + }, "Logging": { "LogLevel": { "Default": "Information", diff --git a/DbFirst.Infrastructure/ApplicationDbContext.cs b/DbFirst.Infrastructure/ApplicationDbContext.cs index 278a43c..dc3cc30 100644 --- a/DbFirst.Infrastructure/ApplicationDbContext.cs +++ b/DbFirst.Infrastructure/ApplicationDbContext.cs @@ -1,49 +1,54 @@ using DbFirst.Domain.Entities; using Microsoft.EntityFrameworkCore; +using Microsoft.Extensions.Options; namespace DbFirst.Infrastructure; public partial class ApplicationDbContext : DbContext { - public ApplicationDbContext(DbContextOptions options) + private readonly TableConfigurations _config; + + public ApplicationDbContext(DbContextOptions options, IOptionsMonitor configOptions) : base(options) { + _config = configOptions.CurrentValue; } public virtual DbSet VwmyCatalogs { get; set; } - // TODO: Configure column names on appsettings via IConfiguration protected override void OnModelCreating(ModelBuilder modelBuilder) { + var catCfg = _config.VwmyCatalog; + modelBuilder.Entity(entity => { entity.HasKey(e => e.Guid); - entity.ToView("VWMY_CATALOG"); + entity.ToView(catCfg.ViewName); - entity.Property(e => e.Guid).HasColumnName("GUID"); + entity.Property(e => e.Guid).HasColumnName(catCfg.GuidColumnName); entity.Property(e => e.AddedWho) .HasMaxLength(30) .IsUnicode(false) - .HasColumnName("ADDED_WHO"); + .HasColumnName(catCfg.AddedWhoColumnName); entity.Property(e => e.AddedWhen) .HasColumnType("datetime") - .HasColumnName("ADDED_WHEN"); + .HasColumnName(catCfg.AddedWhenColumnName); entity.Property(e => e.CatString) .HasMaxLength(900) .IsUnicode(false) - .HasColumnName("CAT_STRING"); + .HasColumnName(catCfg.CatStringColumnName); entity.Property(e => e.CatTitle) .HasMaxLength(100) .IsUnicode(false) - .HasColumnName("CAT_TITLE"); + .HasColumnName(catCfg.CatTitleColumnName); entity.Property(e => e.ChangedWhen) .HasColumnType("datetime") - .HasColumnName("CHANGED_WHEN"); + .HasColumnName(catCfg.ChangedWhenColumnName); entity.Property(e => e.ChangedWho) .HasMaxLength(30) .IsUnicode(false) - .HasColumnName("CHANGED_WHO"); + .HasColumnName(catCfg.ChangedWhoColumnName); }); OnModelCreatingPartial(modelBuilder); diff --git a/DbFirst.Infrastructure/DbFirst.Infrastructure.csproj b/DbFirst.Infrastructure/DbFirst.Infrastructure.csproj index 654e162..5a8052a 100644 --- a/DbFirst.Infrastructure/DbFirst.Infrastructure.csproj +++ b/DbFirst.Infrastructure/DbFirst.Infrastructure.csproj @@ -16,6 +16,7 @@ + diff --git a/DbFirst.Infrastructure/DependencyInjection.cs b/DbFirst.Infrastructure/DependencyInjection.cs index 7099eb5..d01436f 100644 --- a/DbFirst.Infrastructure/DependencyInjection.cs +++ b/DbFirst.Infrastructure/DependencyInjection.cs @@ -8,6 +8,7 @@ public static class DependencyInjection { public static IServiceCollection AddInfrastructure(this IServiceCollection services, IConfiguration configuration) { + services.Configure(configuration.GetSection("TableConfigurations")); services.AddDbContext(options => options.UseSqlServer(configuration.GetConnectionString("DefaultConnection"))); return services; diff --git a/DbFirst.Infrastructure/TableConfigurations.cs b/DbFirst.Infrastructure/TableConfigurations.cs new file mode 100644 index 0000000..b6c29ef --- /dev/null +++ b/DbFirst.Infrastructure/TableConfigurations.cs @@ -0,0 +1,19 @@ +namespace DbFirst.Infrastructure +{ + public class TableConfigurations + { + public VwmyCatalogConfiguration VwmyCatalog { get; set; } = new(); + } + + public class VwmyCatalogConfiguration + { + public string ViewName { get; set; } = "VWMY_CATALOG"; + public string GuidColumnName { get; set; } = "GUID"; + public string CatTitleColumnName { get; set; } = "CAT_TITLE"; + public string CatStringColumnName { get; set; } = "CAT_STRING"; + public string AddedWhoColumnName { get; set; } = "ADDED_WHO"; + public string AddedWhenColumnName { get; set; } = "ADDED_WHEN"; + public string ChangedWhoColumnName { get; set; } = "CHANGED_WHO"; + public string ChangedWhenColumnName { get; set; } = "CHANGED_WHEN"; + } +}