net core 1(dnx 4.5.1)与enterpriselibrary 6-设置连接字符串



使用net core 1(dnx 4.5.1)运行企业库数据访问块时遇到大问题

如何设置entlib 的默认连接字符串

我的appsettings.json"ConnectionString":"Server=localhost\sqlexpress;初始目录=盲;用户Id=盲;密码=盲"

这是我的问题(没有默认的连接字符串)数据库数据库=数据库工厂.CreateDatabase();

如何将appsettings ConnectionString传递到entlib数据库工厂

任何帮助都将不胜感激

我知道这是一个老问题,但我有类似的设置(但使用.NET Core 2.0),我花了一段时间才弄清楚如何在不使用web.config管理默认数据库连接的情况下设置默认数据库连接。

我所做的是在appsettings.json中包含默认数据库和所有连接字符串,然后在我的Startup类中,我将appsettings.json读取到一个对象中,我定义该对象存储默认数据库名称和连接字符串,并使用DatabaseFactory.SetDatabase配置默认+命名数据库。

DatabaseFactory.SetDatabases()定义

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);
    }

}

每当有文档时,我总是建议阅读它,因为它通常很好。这是其中一个例子,请参阅"ASP.NET 5和Entity Framework 6入门"。为了确保正确配置,您需要做几件事。

设置连接字符串和DI

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

另外,请注意配置中的路径,它似乎与您的不同。

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

相关内容

  • 没有找到相关文章

最新更新