Chavoshi / EnterpriseLibrary.NetCore

Project moved to
https://github.com/enterpriselibrary/
51 stars 30 forks source link

Support for appsettings.json in Web API Core #43

Open mike-01 opened 4 years ago

mike-01 commented 4 years ago

Hello.

Is there or will there be support for the .NetCore Web API and appsettings.json?

I tried it and it didn't work.

Thanks in advance and thanks for doing this.

Mike

samdoss commented 4 years ago

public class DataConfiguration { public string DefaultDatabase { get; set; } public string ConnectionString { get; set; } public string ProviderName { get; set; } } public class Startup { public DataConfiguration DataConfig; public Startup(IConfiguration configuration) { DataConfig = configuration.Get(); DatabaseFactory.SetDatabases(() => new SqlDatabase(DataConfig.ConnectionString), GetDatabase);

        Configuration = configuration;
    }

    public Database GetDatabase(string name)
    {
        if(DataConfig.ProviderName == "System.Data.SqlClient")
        {
            return new SqlDatabase(DataConfig.ConnectionString);
        }
        return null;
    }

    public IConfiguration Configuration { get; }

    public void ConfigureServices(IServiceCollection services)
    {
        services.AddMvc().SetCompatibilityVersion(CompatibilityVersion.Version_2_1);

        var config = new DataConfiguration();
        //Configuration.Bind("DataConfiguration", config);            
        Configuration.GetSection(nameof(DataConfiguration)).Bind(DataConfig);
        services.AddSingleton(config);
        services.AddTransient<IProposalRepository, ProposalRepository>();

        services.AddScoped(serviceProvider =>
        {
            var options = serviceProvider.GetRequiredService<IOptions<DataConfiguration>>();
            return new SqlDatabase(options.Value.ConnectionString);
        });
    }

Use this sample. It will work.