public static IWebHostBuilder UseMultiTenancy <TApplication>(
            this IWebHostBuilder masterWebHostBuilder,
            Action <IMultiTenancyBuilder <TApplication> > configurator
            )
            where TApplication : class, IApplication
        {
            if (configurator == null)
            {
                throw new ArgumentNullException(nameof(configurator));
            }

            var builder = new MultiTenancyBuilder <TApplication>(masterWebHostBuilder);

            configurator(builder);

            masterWebHostBuilder.ConfigureServices(
                (
                    context,
                    collection
                ) =>
            {
                collection.AddSingleton <IMultiTenancyBuilder <TApplication> >(builder);
                collection.AddSingleton <ITenantPipelineBuilder, TenantPipelineBuilder <TApplication> >();
            });
            masterWebHostBuilder.UseStartup <MasterStartup>();

            return(masterWebHostBuilder);
        }
Exemple #2
0
 /// <summary>
 /// Register an <see cref="SqlServerOnConfiguringDbContextOptionsBuilderProvider"/> provider and <see cref="TenantDbContextFactory{TContext,TTenant,TTenancy,TKey}"/>
 /// </summary>
 /// <param name="service"><see cref="MultiTenancyBuilder"/></param>
 /// <returns><see cref="MultiTenancyBuilder"/></returns>
 public static MultiTenancyBuilder UseSqlServer(this MultiTenancyBuilder service)
 {
     service.RegisterOnConfiguringProvider(typeof(SqlServerOnConfiguringDbContextOptionsBuilderProvider));
     return(service.AddTenantFactory(typeof(TenantDbContextFactory <, , ,>)));
 }