我想将连接字符串传递给DbContext的构造函数。这方面的答案已在此处得到解答:Pass connection string to code-first DbContext
(如果您不想点击代码)
public MyContext(string connString)
: base(connString)
{
}
但是,当我尝试启用迁移时,我收到错误:“目标上下文'...'不可构造。添加默认构造函数或提供IDbContextFactory的实现。”
此外,当我尝试使用EF PowerTools生成实体数据模型时,会收到错误:“在所选文件中找不到从DbContext派生的可构造类型。”
这是一个常见问题吗?我有一个修复,但感觉就像一个黑客。其他任何人都不得不在此之前处理这个问题吗?
答案 0 :(得分:4)
还添加一个空构造函数,例如......
public MyContext()
{
}
一旦你定义了一个参数化的ctor,你的默认值就会隐藏
e.g。见Why does the default parameterless constructor go away when you create one with parameters
这也是从外部用户“隐藏”默认构造的一种方式。
通常你甚至不会把那个'其他'ctor暴露给外面 - 因为它'你的',你只需在你需要的内容中进行硬编码。或者更好 - 您使用'app.config'指定连接字符串。有关详细信息(及其问题),请参阅...
Migration does not alter my table
Migration not working as I wish... Asp.net EntityFramework