C# 具有自定义连接字符串的实体框架DbContext动态实例化

C# 具有自定义连接字符串的实体框架DbContext动态实例化,c#,entity-framework,dbcontext,C#,Entity Framework,Dbcontext,从ObjectContext迁移到DbContext代码生成,我意识到生成的上下文类(从DbContext继承)没有接收connectionString的构造函数,也没有EntityConnection(与ObjectContext子类类似) 这在我的应用程序中是一个问题,因为我需要使用运行时生成的连接字符串从具体类型动态实例化我的上下文。在继承DbContext的类上,您应该能够指定接受连接的基本构造函数: public class MyDbContext : DbContext {

从ObjectContext迁移到DbContext代码生成,我意识到生成的上下文类(从DbContext继承)没有接收connectionString的构造函数,也没有EntityConnection(与ObjectContext子类类似)


这在我的应用程序中是一个问题,因为我需要使用运行时生成的连接字符串从具体类型动态实例化我的上下文。

在继承DbContext的类上,您应该能够指定接受连接的基本构造函数:

public class MyDbContext : DbContext
{
    public MyDbContext(string connString)
        : base(connString)
    {
    }
}
但是,您必须使用SQLConnection builder:

SqlConnectionStringBuilder connBuilder= new SqlConnectionStringBuilder(dbConnString);
并在构造函数中使用它:

MyDbContext dbContext = new MyDbContext(connBuilder.ToString());

在继承DbContext的类上,应该能够指定接受连接的基构造函数:

public class MyDbContext : DbContext
{
    public MyDbContext(string connString)
        : base(connString)
    {
    }
}
但是,您必须使用SQLConnection builder:

SqlConnectionStringBuilder connBuilder= new SqlConnectionStringBuilder(dbConnString);
并在构造函数中使用它:

MyDbContext dbContext = new MyDbContext(connBuilder.ToString());
这帮助了我:

 public MyDatabaseContext():base("name=MyConnectionString")
  {
  }
这帮助了我:

 public MyDatabaseContext():base("name=MyConnectionString")
  {
  }

嗨,伊扎基尔!这是更符合逻辑的方法。但是我不能通过添加构造函数来修改我的类MyDbContext。ObjectContext满足了我在这方面的需要,提供了带连接字符串的开箱即用的构造函数,不能相信在DbContexteded响应中没有考虑到这一点,并在类定义中添加了“partial”来解决您的问题;现在你不必编辑生成的代码,它不是应该立即生成吗?嗨,伊扎基尔!这是更符合逻辑的方法。但是我不能通过添加构造函数来修改我的类MyDbContext。ObjectContext满足了我在这方面的需要,提供了带连接字符串的开箱即用的构造函数,不能相信在DbContexteded响应中没有考虑到这一点,并在类定义中添加了“partial”来解决您的问题;现在您不必编辑生成的代码,它不是应该立即生成吗?