Update DbTriggerParams and EF Core package versions
- Changed DbTriggerParams to use ICollection<string> for flexibility. - Updated Microsoft.EntityFrameworkCore.SqlServer to version 9.0.6. - Made _logger in EGDbContext nullable and optional in constructor. - Updated logging statements to prevent null reference exceptions. - Added Microsoft.EntityFrameworkCore.SqlServer package for net8.0 and net9.0. - Introduced appsettings.migration.json for connection strings and trigger parameters. - Added EGDbContextFactory for design-time DbContext creation.
This commit is contained in:
parent
93593226e2
commit
349d65d050
@ -3,6 +3,6 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DbTriggerParams : Dictionary<string, IEnumerable<string>>
|
public class DbTriggerParams : Dictionary<string, ICollection<string>>
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@ -22,7 +22,7 @@
|
|||||||
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
|
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
|
||||||
<PackageReference Include="DigitalData.Core.API" Version="2.2.1" />
|
<PackageReference Include="DigitalData.Core.API" Version="2.2.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.4" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
|
||||||
<PackageReference Include="NLog" Version="5.2.5" />
|
<PackageReference Include="NLog" Version="5.2.5" />
|
||||||
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.0" />
|
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.0" />
|
||||||
<PackageReference Include="Scalar.AspNetCore" Version="2.2.1" />
|
<PackageReference Include="Scalar.AspNetCore" Version="2.2.1" />
|
||||||
|
|||||||
@ -59,9 +59,9 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
|
|
||||||
private readonly DbTriggerParams _triggers;
|
private readonly DbTriggerParams _triggers;
|
||||||
|
|
||||||
private readonly ILogger<EGDbContext> _logger;
|
private readonly ILogger<EGDbContext>? _logger;
|
||||||
|
|
||||||
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext> logger) : base(options)
|
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext>? logger = null) : base(options)
|
||||||
{
|
{
|
||||||
_triggers = triggerParamOptions.Value;
|
_triggers = triggerParamOptions.Value;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@ -151,7 +151,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
.ForEach(tName =>
|
.ForEach(tName =>
|
||||||
{
|
{
|
||||||
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(tName));
|
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(tName));
|
||||||
_logger.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
|
_logger?.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: call add trigger methods with attributes and reflection
|
// TODO: call add trigger methods with attributes and reflection
|
||||||
|
|||||||
44
EnvelopeGenerator.Infrastructure/EGDbContextFactory.cs
Normal file
44
EnvelopeGenerator.Infrastructure/EGDbContextFactory.cs
Normal file
@ -0,0 +1,44 @@
|
|||||||
|
using EnvelopeGenerator.Application.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);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return new EGDbContext(optionsBuilder.Options, Options.Create(dbTriggerParams));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -27,6 +27,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
|
||||||
@ -36,6 +37,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.17" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
|
||||||
@ -45,6 +47,13 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<None Update="appsettings.migration.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
</Project>
|
||||||
13
EnvelopeGenerator.Infrastructure/appsettings.migration.json
Normal file
13
EnvelopeGenerator.Infrastructure/appsettings.migration.json
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
||||||
|
},
|
||||||
|
"DbTriggerParams": {
|
||||||
|
"Envelope": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ],
|
||||||
|
"EnvelopeHistory": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ],
|
||||||
|
"EmailOut": [ "TBEMLP_EMAIL_OUT_AFT_INS", "TBEMLP_EMAIL_OUT_AFT_UPD" ],
|
||||||
|
"EnvelopeReceiverReadOnly": [ "TBSIG_ENVELOPE_RECEIVER_READ_ONLY_UPD" ],
|
||||||
|
"Receiver": [],
|
||||||
|
"EmailTemplate": [ "TBSIG_EMAIL_TEMPLATE_AFT_UPD" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
@ -2113,7 +2113,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="7.0.20" />
|
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="7.0.20" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="NLog" Version="5.2.5" />
|
<PackageReference Include="NLog" Version="5.2.5" />
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user