diff --git a/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs b/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs index e076bc03cb..d5adce7577 100644 --- a/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs +++ b/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs @@ -34,11 +34,6 @@ namespace Tgstation.Server.Host.Configuration /// public bool DropDatabase { get; set; } - /// - /// Used to indicate that the database is being loaded to generate migrations. Should not be used in production!. - /// - public bool DesignTime { get; set; } - /// /// The form of the of the target server. /// diff --git a/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs b/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs index a0569aafe3..54d79bddc3 100644 --- a/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs +++ b/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs @@ -26,7 +26,6 @@ namespace Tgstation.Server.Host.Database.Design { var dbConfig = new DatabaseConfiguration { - DesignTime = true, DatabaseType = databaseType, ConnectionString = connectionString, ServerVersion = serverVersion, diff --git a/src/Tgstation.Server.Host/Database/Design/SqliteDesignTimeDbContextFactory.cs b/src/Tgstation.Server.Host/Database/Design/SqliteDesignTimeDbContextFactory.cs index b855f8ad9c..924d8934f9 100644 --- a/src/Tgstation.Server.Host/Database/Design/SqliteDesignTimeDbContextFactory.cs +++ b/src/Tgstation.Server.Host/Database/Design/SqliteDesignTimeDbContextFactory.cs @@ -12,11 +12,11 @@ namespace Tgstation.Server.Host.Database.Design /// public SqliteDatabaseContext CreateDbContext(string[] args) { - SqliteDatabaseContext.DesignTime = true; return new SqliteDatabaseContext( DesignTimeDbContextFactoryHelpers.CreateDatabaseContextOptions( DatabaseType.Sqlite, - "Data Source=tgs_design.sqlite3;Mode=ReadWriteCreate")); + "Data Source=tgs_design.sqlite3;Mode=ReadWriteCreate"), + true); } } } diff --git a/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs b/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs index 0076efe2c2..c13ebf2027 100644 --- a/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs +++ b/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs @@ -14,16 +14,21 @@ namespace Tgstation.Server.Host.Database sealed class SqliteDatabaseContext : DatabaseContext { /// - /// Static property to receive the configured value of . + /// If the database context is running in design time mode. /// - public static bool DesignTime { get; set; } + readonly bool designTime; /// /// Initializes a new instance of the class. /// /// The for the . - public SqliteDatabaseContext(DbContextOptions dbContextOptions) : base(dbContextOptions) + /// The value of . + public SqliteDatabaseContext( + DbContextOptions dbContextOptions, + bool designTime = false) + : base(dbContextOptions) { + this.designTime = designTime; } /// @@ -31,7 +36,9 @@ namespace Tgstation.Server.Host.Database /// /// The to configure. /// The . - public static void ConfigureWith(DbContextOptionsBuilder options, DatabaseConfiguration databaseConfiguration) + public static void ConfigureWith( + DbContextOptionsBuilder options, + DatabaseConfiguration databaseConfiguration) { ArgumentNullException.ThrowIfNull(options); ArgumentNullException.ThrowIfNull(databaseConfiguration); @@ -39,7 +46,6 @@ namespace Tgstation.Server.Host.Database if (databaseConfiguration.DatabaseType != DatabaseType.Sqlite) throw new InvalidOperationException($"Invalid DatabaseType for {nameof(SqliteDatabaseContext)}!"); - DesignTime = databaseConfiguration.DesignTime; options.UseSqlite(databaseConfiguration.ConnectionString, sqliteOptions => sqliteOptions.UseQuerySplittingBehavior(QuerySplittingBehavior.SingleQuery)); } @@ -56,7 +62,7 @@ namespace Tgstation.Server.Host.Database // use the DateTimeOffsetToBinaryConverter // Based on: https://github.com/aspnet/EntityFrameworkCore/issues/10784#issuecomment-415769754 // This only supports millisecond precision, but should be sufficient for most use cases. - if (!DesignTime) + if (!designTime) foreach (var entityType in modelBuilder.Model.GetEntityTypes()) { var properties = entityType