我有一个 dll,它使用 Entity Framework 6 来执行一些数据库操作。我正在使用数据库优先方法。 模型和与 Entity Framework 有关的所有内容,如 App.config 中的连接字符串,都是通过 Visual Studio 中的向导创建的。
所以我编译了dll,并把它和相应的.config放在了使用dll的应用程序期望的文件夹中。
一切正常,直到我进行实际的数据库调用为止。我得到错误:
Cannot find connection string for MyDatabaseEntity
正如我所说,自动生成的连接字符串在 dll 的配置文件中。我无法更改应用程序的 App.config。 但是应用程序移交了一个对象,其中包含我自己构建连接字符串所需的所有信息。 所以我正在寻找一种在代码中设置连接字符串而不依赖配置文件的方法。 不过,我找到的有关数据库优先方法的所有教程都使用了这种方法。 我在这里找到了一篇文章,说在创建对象时只需将连接字符串作为参数提供,例如
MyDatabaseEntities = new MyDatabaseEntities(dbConnect);
但是“MyDatabaseEntities”没有接受任何参数的构造函数
public partial class MyDatabaseEntities : DbContext
{
public MyDatabaseEntities()
: base("name=MyDatabaseEntities")
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<MyTable> MyTable { get; set; }
}
最佳答案
怎么样:
public partial class MyDatabaseEntities : DbContext
{
public MyDatabaseEntities(string connectionString)
: base(connectionString)
{
}
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
throw new UnintentionalCodeFirstException();
}
public virtual DbSet<MyTable> MyTable { get; set; }
然后像以前一样初始化你的数据库:
string myConnectionString = "...";
MyDatabaseEntities = new MyDatabaseEntities(myConnectionString);
关于c# - Entity Framework 6 在代码中设置连接字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34350851/