Using Entity Framework 6 class library project with MVC 6



我们花了数千个小时使用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"]);
    }
}

最新更新