diff --git a/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs b/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs
index cba1b03672..a02f70256e 100644
--- a/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs
+++ b/src/Tgstation.Server.Host/Configuration/DatabaseConfiguration.cs
@@ -34,6 +34,11 @@ 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 a target MySQL/MariaDB server
///
diff --git a/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs b/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs
index 5071d72ccf..68fae14333 100644
--- a/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs
+++ b/src/Tgstation.Server.Host/Database/Design/DesignTimeDbContextFactoryHelpers.cs
@@ -34,7 +34,9 @@ namespace Tgstation.Server.Host.Database.Design
builder.AddJsonFile(RootJson);
builder.AddJsonFile(DevJson);
var configuration = builder.Build();
- return Options.Create(configuration.GetSection(DatabaseConfiguration.Section).Get());
+ var dbConfig = configuration.GetSection(DatabaseConfiguration.Section).Get();
+ dbConfig.DesignTime = true;
+ return Options.Create(dbConfig);
}
}
}
diff --git a/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs b/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs
index 8be3c8eea8..2e71317a65 100644
--- a/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs
+++ b/src/Tgstation.Server.Host/Database/SqliteDatabaseContext.cs
@@ -43,18 +43,19 @@ 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.
- foreach (var entityType in modelBuilder.Model.GetEntityTypes())
- {
- var properties = entityType
- .ClrType
- .GetProperties()
- .Where(p => p.PropertyType == typeof(DateTimeOffset) || p.PropertyType == typeof(DateTimeOffset?));
- foreach (var property in properties)
- modelBuilder
- .Entity(entityType.Name)
- .Property(property.Name)
- .HasConversion(new DateTimeOffsetToBinaryConverter());
- }
+ if (!DatabaseConfiguration.DesignTime)
+ foreach (var entityType in modelBuilder.Model.GetEntityTypes())
+ {
+ var properties = entityType
+ .ClrType
+ .GetProperties()
+ .Where(p => p.PropertyType == typeof(DateTimeOffset) || p.PropertyType == typeof(DateTimeOffset?));
+ foreach (var property in properties)
+ modelBuilder
+ .Entity(entityType.Name)
+ .Property(property.Name)
+ .HasConversion(new DateTimeOffsetToBinaryConverter());
+ }
}
///