c# - Entity Framework 6 在代码中设置连接字符串

标签 c# .net entity-framework dll

我有一个 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/

相关文章:

.net - 带有大字体的 Windows 对话框

sql - Entity Framework (LINQ) 可以根据 JSON where 子句选择行吗?

c# - 与 const 字段相比,在 web.config 中存储值是否有性能损失?

c# - 如何在非事件窗口中用代码模拟键盘事件?

c# - 是否可以在带有上传文件的 asp.net web api 中进行模型绑定(bind)?

c# - 更改 PlaceholderText 的文字颜色(Windows 8.1 App)

c# - 如何使用反射在运行时构建此 c# "Expression"?

.net - 带有 json 对象的 ajax post 中的 antiforgerytoken ASP.NET MVC

c# - 无法在 .NET Core 中使用 EF 更新数据库

c# - 如何在 Entity Framework 中处理System.InvalidOperationException?