Create new UseOqtaneDatabase extension method and replace all uses of UseSqlServer.

This is a preparative step to locate all database configuration in one file.
This commit is contained in:
Charles Nurse 2021-03-06 14:13:06 -08:00
parent af896e0fa8
commit 8376a09ad6
5 changed files with 36 additions and 16 deletions

View File

@ -0,0 +1,15 @@
using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore;
namespace Oqtane.Extensions
{
public static class DbContextOptionsBuilderExtensions
{
public static DbContextOptionsBuilder UseOqtaneDatabase([NotNull] this DbContextOptionsBuilder optionsBuilder, string connectionString)
{
optionsBuilder.UseSqlServer(connectionString);
return optionsBuilder;
}
}
}

View File

@ -168,7 +168,8 @@ namespace Oqtane.Infrastructure
var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString(); var dataDirectory = AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString();
if (!Directory.Exists(dataDirectory)) Directory.CreateDirectory(dataDirectory); if (!Directory.Exists(dataDirectory)) Directory.CreateDirectory(dataDirectory);
using (var dbc = new DbContext(new DbContextOptionsBuilder().UseSqlServer(NormalizeConnectionString(install.ConnectionString)).Options)) var connectionString = NormalizeConnectionString(install.ConnectionString);
using (var dbc = new DbContext(new DbContextOptionsBuilder().UseOqtaneDatabase(connectionString).Options))
{ {
// create empty database if it does not exist // create empty database if it does not exist
dbc.Database.EnsureCreated(); dbc.Database.EnsureCreated();

View File

@ -4,6 +4,7 @@ using Microsoft.AspNetCore.Http;
using Microsoft.AspNetCore.Identity; using Microsoft.AspNetCore.Identity;
using Microsoft.AspNetCore.Identity.EntityFrameworkCore; using Microsoft.AspNetCore.Identity.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Oqtane.Extensions;
using Oqtane.Models; using Oqtane.Models;
namespace Oqtane.Repository namespace Oqtane.Repository
@ -24,9 +25,9 @@ namespace Oqtane.Repository
var tenant = _tenantResolver.GetTenant(); var tenant = _tenantResolver.GetTenant();
if (tenant != null) if (tenant != null)
{ {
optionsBuilder.UseSqlServer(tenant.DBConnectionString var connectionString = tenant.DBConnectionString
.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString()) .Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString());
); optionsBuilder.UseOqtaneDatabase(connectionString);
} }
base.OnConfiguring(optionsBuilder); base.OnConfiguring(optionsBuilder);
} }

View File

@ -1,5 +1,6 @@
using System.Diagnostics.CodeAnalysis; using System.Diagnostics.CodeAnalysis;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Oqtane.Extensions;
using Oqtane.Models; using Oqtane.Models;
namespace Oqtane.Repository namespace Oqtane.Repository
@ -15,7 +16,7 @@ namespace Oqtane.Repository
} }
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
=> optionsBuilder.UseSqlServer(_connectionString); => optionsBuilder.UseOqtaneDatabase(_connectionString);
public virtual DbSet<Alias> Alias { get; set; } public virtual DbSet<Alias> Alias { get; set; }
public virtual DbSet<Tenant> Tenant { get; set; } public virtual DbSet<Tenant> Tenant { get; set; }

View File

@ -4,13 +4,14 @@ using Microsoft.AspNetCore.Http;
using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore;
using Oqtane.Models; using Oqtane.Models;
using Microsoft.Extensions.Configuration; using Microsoft.Extensions.Configuration;
using Oqtane.Extensions;
namespace Oqtane.Repository namespace Oqtane.Repository
{ {
public class MasterDBContext : DbContext public class MasterDBContext : DbContext
{ {
private IHttpContextAccessor _accessor; private readonly IHttpContextAccessor _accessor;
private IConfiguration _configuration; private readonly IConfiguration _configuration;
public MasterDBContext(DbContextOptions<MasterDBContext> options, IHttpContextAccessor accessor, IConfiguration configuration) : base(options) public MasterDBContext(DbContextOptions<MasterDBContext> options, IHttpContextAccessor accessor, IConfiguration configuration) : base(options)
{ {
@ -20,11 +21,12 @@ namespace Oqtane.Repository
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder) protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{ {
if (!string.IsNullOrEmpty(_configuration.GetConnectionString("DefaultConnection"))) if (!String.IsNullOrEmpty(_configuration.GetConnectionString("DefaultConnection")))
{ {
optionsBuilder.UseSqlServer(_configuration.GetConnectionString("DefaultConnection") var connectionString = _configuration.GetConnectionString("DefaultConnection")
.Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString()) .Replace("|DataDirectory|", AppDomain.CurrentDomain.GetData("DataDirectory")?.ToString());
);
optionsBuilder.UseOqtaneDatabase(connectionString);
} }
base.OnConfiguring(optionsBuilder); base.OnConfiguring(optionsBuilder);
} }