示例#1
0
        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>());
                 }
             }
         }
     }
 }
示例#4
0
 static void RegisterEntityFrameworkInterceptors(IRelationalDbContextOptionsBuilderInfrastructure builder)
 {
     builder.OptionsBuilder.AddInterceptors(new DbConnectionInterceptor());
 }
示例#5
0
 public override void DbContextOptionsAction(IRelationalDbContextOptionsBuilderInfrastructure dbContextOptionsAction, string assemblyName = null)
 {
     base.DbContextOptionsAction(dbContextOptionsAction, assemblyName);
 }