2

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

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

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

这是我的问题(没有默认连接字符串) Database db = DatabaseFactory.CreateDatabase();

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

任何帮助将不胜感激

4

2 回答 2

0

我知道这是一个老问题,但我有一个类似的设置(但使用 .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);
    }

}

于 2018-04-03T21:39:24.783 回答
-1

每当有文档时,我总是建议阅读它,因为它通常很好。这是其中一个示例,请查看“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
}
于 2016-04-06T12:13:21.093 回答