实体框架 - 在程序集中找不到迁移配置类型

时间:2016-08-17 16:10:00

标签: c# entity-framework entity-framework-6

我在C#项目中有多个dbcontexts,并且当我指定完整命令时,我尝试启用迁移,即:

"启用 - 迁移-ContextTypeName Models.Account.AccountDetailDbContext"

使用配置类

创建迁移文件夹

然后我收到一条消息:

"检查上下文是否以现有数据库为目标......"

然后

"迁移配置类型' Portal.WebUI.Migrations.Configuration'未在装配' Portal.WebUI'。"

中找到

即使它刚刚创建了文件,也无法找到它。

有人可以帮忙吗?

我在软件包管理器控制台中选择了正确的项目

我已尝试使用-verbose命令,但它没有提供其他信息

如果我将dbcontexts和类复制到一个新项目中,那么它一切正常,所以它必须是这个现有项目中的某个东西,它使迁移失败,但我不能告诉它是什么。

提前感谢您的回答

8 个答案:

答案 0 :(得分:2)

我通过在EntityFrameworkCore\之前添加Add-Migration来解决此问题,即最终声明是:

EntityFrameworkCore\Add-Migration

为新迁移命名后。

答案 1 :(得分:1)

我设法通过卸载EF nuget包然后重新安装来解决这个问题。

相当恼人......但我希望它可以帮助别人。

答案 2 :(得分:1)

值得检查的另一个可能问题是:您的项目是否已签署?正如我刚刚发现的那样,如果使用强名称密钥文件对程序集进行签名,则此问题也会发生。 EntityFramework工具包的一部分是在迁移过程中调用的migrate.exe。如果程序集已签名,则此应用程序无法找到配置类型。

解决方案似乎是< Project> →属性→签名:取消勾选"签署程序集",至少在执行迁移任务时。你完成后再勾选它。

答案 3 :(得分:0)

由于命名空间中的拼写错误,我也遇到了这个问题

答案 4 :(得分:0)

我遇到了同样的问题。我发现,在我的项目名称中,"-"被包含为"abc-xyz"。我删除了我的项目并将其重新创建为"abcxyz"并且它有效。不要重命名项目 - 您必须在每次引用时重命名它。在这种情况下,首先卸载EF并重命名,然后再次安装EF。

答案 5 :(得分:0)

我遇到了这个问题。我的解决方案:

  1. 退出Visual Studio

  2. 在Visual Studio上再次打开项目

  3. 重建解决方案

然后将错误消除。我可以运行命令。

答案 6 :(得分:0)

运行Enable-Migrations并且创建配置文件后,重新生成项目并再次运行Enable-Migrations -Force

答案 7 :(得分:0)

我遇到了这个问题,通过更改程序包管理器控制台顶部的下拉框来选择正确的项目,此问题得以解决。您可能需要最大化软件包管理器控制台的宽度才能看到此框。