带connString的DbContext构造函数会导致EF迁移和EF Powertools出现问题

时间:2013-04-05 21:55:14

标签: asp.net-mvc entity-framework asp.net-web-api dbcontext

我想将连接字符串传递给DbContext的构造函数。这方面的答案已在此处得到解答:Pass connection string to code-first DbContext

(如果您不想点击代码)

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

}

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

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

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

1 个答案:

答案 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