2013-04-05 58 views
0

我想将连接字符串传递给DbContext的构造函数。要做到这一点的方式已经在这里找到答案:Pass connection string to code-first DbContext带connString的DbContext构造函数导致EF迁移和EF Powertools的问题

(代码,如果你不喜欢点击)

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

} 

然而,当我尝试启用迁移我收到错误消息:“我们的目标范围内'...'不可构造,添加一个默认构造函数或提供IDbContextFactory的实现。“

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

这是常见问题吗?我有一个修复,但它感觉像一个黑客。其他任何人都必须处理这之前?

回答

4

还添加一个空的构造,e.g ...

public MyContext() 
{ 
} 

事情是,一旦你定义了一个参数化的构造函数默认的一个获取隐藏

例如看到Why does the default parameterless constructor go away when you create one with parameters

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


通常你甚至不暴露是“其他”男星到外面 - 作为其“你”,你只是硬编码里面你所需要的。或者或者更好 - 你使用'app.config'来指定连接字符串。有关详细信息(以及与它的问题)看到......

Migration does not alter my table
Migration not working as I wish... Asp.net EntityFramework

+0

哈哈,那肯定是一个漫长的一天。感谢您及时的回复! – brudert 2013-04-05 22:09:25

+0

np :)通常你甚至不会将'other'ctor暴露给外部 - 就像你的'DbContext',你只需要在你需要的内部进行硬编码。或者,您也可以使用'app.config'来指定连接字符串。 – NSGaga 2013-04-05 22:10:54