在 MVC 6 中使用 Entity Framework 6 class 库项目

Using Entity Framework 6 class library project with MVC 6

我们花费了数千小时使用 EF6 创建应用程序,并且我们遵循的结构将 EF6 框架用于单独的 class 库层,我们正在尝试切换到 MVC 6 但仍想使用 EF6 class 图书馆项目。

我们目前面临的问题是连接字符串,我们尝试在 applicationsettings.json 中添加连接字符串,然后相应地更新 Startup.cs 文件,如类似 post 中的建议

public class MyContext : DbContext {
  public MyContext(string connectionString) : base(connectionString) {
  }
}

var context = new MyContext("myConnectionString");

但似乎没有任何效果,不确定如何在我的 .net 4.6 class 库项目中使用以下行,或者我如何访问 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"]);
    }
}