net core 1 (dnx 4.5.1) with enterpriselibrary 6 - setting up the connection string

狂风中的少年 提交于 2019-12-11 02:22:07

问题


i ve big problems running enterprise library data access block with net core 1 (dnx 4.5.1)

How can i setup the default connection string for entlib

my appsettings.json "ConnectionString": "Server=localhost\sqlexpress;Initial Catalog=blind;User Id=blind;Password=blind"

Here is my problem (no default connectionstring) Database db = DatabaseFactory.CreateDatabase();

how can i pass the appsettings ConnectionString to the entlib databasefactory

any help would be greatly appreciated


回答1:


I know it's an old question, but I have a similar setup (but using .NET Core 2.0) and it took me awhile to figure out how to set the default database connection without using the web.config to manage it.

What I did was include the default database and all of the connection strings in the appsettings.json and then in my Startup class I read the appsettings.json into an object that I defined to store the default db name and the connection strings and configure the default + named database using DatabaseFactory.SetDatabase.

DatabaseFactory.SetDatabases() Definition

public class DataConfiguration
{
    public string DefaultDatabase { get; set; }
    public List<ConnectionStringSettings> ConnectionStrings { get; set; }
}



public class Startup
{
    public Startup(IConfiguration configuration)
    {
        //Get the Database Connections from appsettings.json
        DataConfig = configuration.Get<DataConfiguration>(); 

        var defaultDb = DataConfig.ConnectionStrings?.Find(c => c.Name == DataConfig.DefaultDatabase);
        DatabaseFactory.SetDatabases(() => new SqlDatabase(defaultDb.ConnectionString), GetDatabase);

        Configuration = configuration;
    }

    public Database GetDatabase(string name)
    {
        var dbInfo = DataConfig.ConnectionStrings.Find(c => c.Name == name);

        if (dbInfo.ProviderName == "System.Data.SqlClient")
        {
            return new SqlDatabase(dbInfo.ConnectionString);
        }

        return new MySqlDatabase(dbInfo.ConnectionString);
    }

}




回答2:


Whenever there is documentation, I always suggest reading it as it is usually good. This is one of those examples, check out the "Getting Started with ASP.NET 5 and Entity Framework 6". There are several things that you need to do to ensure that you are correctly configured.

Setup your connection string and DI.

public class ApplicationDbContext : DbContext
{
    public ApplicationDbContext(string nameOrConnectionString) 
        : base(nameOrConnectionString)
    {
    }
}

Also, notice the path in the configuration, it seems to differ from yours.

public void ConfigureServices(IServiceCollection services)
{
    services.AddScoped((_) => 
        new ApplicationDbContext(
            Configuration["Data:DefaultConnection:ConnectionString"]));

    // Configure remaining services
}


来源:https://stackoverflow.com/questions/36331084/net-core-1-dnx-4-5-1-with-enterpriselibrary-6-setting-up-the-connection-stri

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!