refactor: pass DbContextOptions into context directly
turns out efcore doesn't like it when we create a new options instance (which includes a new data source *and* a new logger factory) every single time we create a context. this commit extracts OnConfiguring into static methods which are called when the context is added to the service collection and when it's manually created for migrations and the importer.
This commit is contained in:
parent
0077a165b5
commit
d982342ab8
5 changed files with 69 additions and 37 deletions
21
Foxnouns.Backend/Database/DatabaseServiceExtensions.cs
Normal file
21
Foxnouns.Backend/Database/DatabaseServiceExtensions.cs
Normal file
|
@ -0,0 +1,21 @@
|
|||
using Serilog;
|
||||
|
||||
namespace Foxnouns.Backend.Database;
|
||||
|
||||
public static class DatabaseServiceExtensions
|
||||
{
|
||||
public static IServiceCollection AddFoxnounsDatabase(
|
||||
this IServiceCollection serviceCollection,
|
||||
Config config
|
||||
)
|
||||
{
|
||||
var dataSource = DatabaseContext.BuildDataSource(config);
|
||||
var loggerFactory = new LoggerFactory().AddSerilog(dispose: false);
|
||||
|
||||
serviceCollection.AddDbContext<DatabaseContext>(options =>
|
||||
DatabaseContext.BuildOptions(options, dataSource, loggerFactory)
|
||||
);
|
||||
|
||||
return serviceCollection;
|
||||
}
|
||||
}
|
Loading…
Add table
Add a link
Reference in a new issue