我们花了数千个小时使用EF6创建应用程序,我们遵循的结构将EF6框架使用到一个单独的类库层中,我们正在尝试切换到MVC 6,但仍然希望使用EF6类库项目。
我们目前面临的问题是连接字符串,我们尝试在applicationsettings.json
中添加连接字符串,然后相应地更新Startup.cs
文件,如Asp.Net5(MVC 6)中类似的文章《如何使用实体框架6.x》中所建议的那样
public class MyContext : DbContext {
public MyContext(string connectionString) : base(connectionString) {
}
}
var context = new MyContext("myConnectionString");
但似乎什么都不起作用,不确定如何在我的.net 4.6类库项目中使用下面的行,或者我如何访问applicationsettings.json
文件?
IConfiguration configuration = new
Configuration().AddJsonFile("config.json");
var connectionString = configuration["Data:DefaultConnection:ConnectionString"]);
选项1
public class MyContext : DbContext
{
public MyContext()
: base(new Configuration().AddJsonFile("config.json")["Data:DefaultConnection:ConnectionString"]);
{
}
{
选项2
public class MyContext : DbContext
{
static readonly string ConnectionString;
static MyContext()
{
IConfiguration configuration = new Configuration().AddJsonFile("config.json");
ConnectionString = configuration["Data:DefaultConnection:ConnectionString"]);
}
public MyContext()
: base(ConnectionString);
{
}
}
选项3
public class MyContext : DbContext
{
public MyContext(string connectionString)
: base(connectionString);
{
}
}
public static class ContextFactory
{
static readonly IConfiguration Configuration;
static ContextFactory()
{
Configuration = new Configuration().AddJsonFile("config.json");
}
public static MyContext CreateMyContext()
{
return new MyContext(Configuration["Data:DefaultConnection:ConnectionString"]);
}
}