0

我想将连接字符串传递给 DbContext 的构造函数。此处已回答了执行此操作的方法:将连接字符串传递给代码优先的 DbContext

(不喜欢点击的代码)

public MyContext(string connString)
    : base(connString)
{

}

但是,当我尝试启用迁移时,我收到错误消息:“目标上下文 '...' 不可构造。添加默认构造函数或提供 IDbContextFactory 的实现。”

此外,当我尝试使用 EF PowerTools 生成实体数据模型时,收到错误消息:“在所选文件中找不到派生自 DbContext 的可构造类型。”

这是个常见的问题吗?我有一个修复,但感觉就像一个黑客。其他人必须先处理这个问题吗?

4

1 回答 1

4

还添加一个空构造函数,例如..

public MyContext()
{
}

事情是,一旦你定义了一个参数化的 ctor,你的默认 ctor 就会被隐藏

例如,当您创建带参数的构造函数时,为什么默认的无参数构造函数会消失

这也是向外部用户“隐藏”默认构造的一种方式。


通常,您甚至不会将“其他” ctor 暴露给外部 - 作为“您的”,您只需在您需要的内容中进行硬编码。或者更好 - 您使用“app.config”来指定连接字符串。有关详细信息(及其问题),请参阅...

迁移不会改变我的表
迁移没有按我的意愿工作... Asp.net EntityFramework

于 2013-04-05T22:04:43.960 回答