コード例 #1
0
        /// <summary>
        /// Registers and configures the <see cref="EntityConfigurationProvider{T}"/> using some default values.
        /// </summary>
        /// <param name="webHostBuilder">A builder for <see cref="IWebHost"/>.</param>
        /// <param name="configureAction">The <see cref="EntityConfigurationOptions"/> to use.</param>
        /// <returns>The <see cref="IHostBuilder"/>.</returns>
        public static IWebHostBuilder UseDatabaseConfiguration <TContext>(this IWebHostBuilder webHostBuilder, Action <EntityConfigurationOptions, IConfiguration> configureAction) where TContext : DbContext, IAppSettingsDbContext
        {
            return(webHostBuilder.ConfigureAppConfiguration((hostBuilderContext, configurationBuilder) => {
                var options = new EntityConfigurationOptions();
                configureAction?.Invoke(options, configurationBuilder.Build());
                var result = options.Validate();
                if (!result.Succedded)
                {
                    throw new ArgumentException(result.Error);
                }

                configurationBuilder.Add(new EntityConfigurationSource <TContext>(options));
            })
                   .ConfigureServices((context, services) => {
                services.AddTransient <IAppSettingsDbContext, TContext>();
            }));
        }