使用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
}