static void RegisterEntityFrameworkExtensions(IRelationalDbContextOptionsBuilderInfrastructure builder) { var extension = builder.OptionsBuilder.Options.FindExtension <DbContextOptionsExtension>(); if (extension == null) { extension = new DbContextOptionsExtension(); } ((IDbContextOptionsBuilderInfrastructure)builder.OptionsBuilder).AddOrUpdateExtension(extension); }
/// <summary> /// 数据库 DbContext 选项配置 /// </summary> /// <param name="dbContextOptionsAction"></param> /// <param name="assemblyName">MigrationsAssembly 的程序集名称,如果为 null,为默认使用当前 XscfDatabaseDbContextType 所在的程序集</param> public virtual void DbContextOptionsAction(IRelationalDbContextOptionsBuilderInfrastructure dbContextOptionsAction, string assemblyName = null) { if (this is IXscfDatabase databaseRegiser) { if (dbContextOptionsAction is SqlServerDbContextOptionsBuilder sqlServerOptionsAction) { var senparcEntitiesAssemblyName = assemblyName ?? databaseRegiser.XscfDatabaseDbContextType.Assembly.FullName; var databaseMigrationHistoryTableName = GetDatabaseMigrationHistoryTableName(); sqlServerOptionsAction .MigrationsAssembly(senparcEntitiesAssemblyName) .MigrationsHistoryTable(databaseMigrationHistoryTableName); } //可以支持其他跟他多数据库 } }
static void AddCustomSchemaExtension(this IRelationalDbContextOptionsBuilderInfrastructure relationalDbContextOptionsBuilderInfrastructure, IServiceCollection services) { if (relationalDbContextOptionsBuilderInfrastructure != null) { var builder = relationalDbContextOptionsBuilderInfrastructure.OptionsBuilder as IDbContextOptionsBuilderInfrastructure; if (builder != null) { // if the extension is registered already then we keep it // otherwise we create a new one var extension = relationalDbContextOptionsBuilderInfrastructure.OptionsBuilder.Options.FindExtension <CustomSchemaOptionsExtension>(); if (extension == null) { using (var scope = services.BuildServiceProvider().CreateScope()) { builder.AddOrUpdateExtension(scope.ServiceProvider.GetService <CustomSchemaOptionsExtension>()); } } } } }
static void RegisterEntityFrameworkInterceptors(IRelationalDbContextOptionsBuilderInfrastructure builder) { builder.OptionsBuilder.AddInterceptors(new DbConnectionInterceptor()); }
public override void DbContextOptionsAction(IRelationalDbContextOptionsBuilderInfrastructure dbContextOptionsAction, string assemblyName = null) { base.DbContextOptionsAction(dbContextOptionsAction, assemblyName); }