feat: add factory for DbContext
This commit is contained in:
parent
348b78b84e
commit
7db4dc2c86
22
SqlData/Persistence/Common/DbContextFactory.cs
Normal file
22
SqlData/Persistence/Common/DbContextFactory.cs
Normal file
@ -0,0 +1,22 @@
|
||||
using Microsoft.EntityFrameworkCore;
|
||||
using System;
|
||||
|
||||
namespace Mirea.Api.DataAccess.Persistence.Common;
|
||||
|
||||
public static class DbContextFactory
|
||||
{
|
||||
public static DbContextOptionsBuilder CreateDbContext<TDbContext, TEntity>(this DbContextOptionsBuilder options, DatabaseProvider provider)
|
||||
where TDbContext : BaseDbContext<TDbContext>
|
||||
where TEntity : class
|
||||
{
|
||||
var dbContext = (TDbContext)Activator.CreateInstance(typeof(TDbContext), (DbContextOptions<TDbContext>)options.Options)!;
|
||||
var configurationType = ConfigurationResolver.GetConfigurationType<TEntity>(provider);
|
||||
var configurationInstance = (IEntityTypeConfiguration<TEntity>)Activator.CreateInstance(configurationType)!;
|
||||
|
||||
var modelBuilder = new ModelBuilder();
|
||||
modelBuilder.ApplyConfiguration(configurationInstance);
|
||||
dbContext.ApplyConfigurations(modelBuilder);
|
||||
|
||||
return options;
|
||||
}
|
||||
}
|
Loading…
Reference in New Issue
Block a user