46 lines
1.7 KiB
C#
46 lines
1.7 KiB
C#
using EnvelopeGenerator.Application.Common.Configurations;
|
|
using Microsoft.EntityFrameworkCore;
|
|
using Microsoft.EntityFrameworkCore.Design;
|
|
using Microsoft.Extensions.Configuration;
|
|
using Microsoft.Extensions.Options;
|
|
|
|
namespace EnvelopeGenerator.Infrastructure
|
|
{
|
|
public class EGDbContextFactory : IDesignTimeDbContextFactory<EGDbContext>
|
|
{
|
|
public EGDbContext CreateDbContext(string[] args)
|
|
{
|
|
var config = new ConfigurationBuilder()
|
|
.SetBasePath(Directory.GetCurrentDirectory()) // Önemli!
|
|
.AddJsonFile("appsettings.migration.json")
|
|
.Build();
|
|
|
|
// create DbContextOptions
|
|
var optionsBuilder = new DbContextOptionsBuilder<EGDbContext>();
|
|
optionsBuilder.UseSqlServer(config.GetConnectionString("Default"));
|
|
|
|
// create DbTriggerParams
|
|
var triggerLists = config.GetSection("DbTriggerParams").Get<Dictionary<string, List<string>>>();
|
|
var dbTriggerParams = new DbTriggerParams();
|
|
if(triggerLists is not null)
|
|
foreach (var triggerList in triggerLists)
|
|
{
|
|
if(triggerList.Value.Count == 0)
|
|
continue; // Skip empty trigger lists
|
|
|
|
var tableName = triggerList.Key;
|
|
|
|
dbTriggerParams[tableName] = new List<string>();
|
|
|
|
foreach (var trigger in triggerList.Value)
|
|
{
|
|
dbTriggerParams[tableName].Add(trigger);
|
|
}
|
|
}
|
|
|
|
var dbContext = new EGDbContext(optionsBuilder.Options, Options.Create(dbTriggerParams));
|
|
dbContext.IsMigration = true;
|
|
return dbContext;
|
|
}
|
|
}
|
|
} |