【问题标题】:Entity Framework - The migrations configuration type was not be found in the assembly实体框架 - 在程序集中找不到迁移配置类型
【发布时间】:2016-08-17 16:10:00
【问题描述】:

我在 C# 项目中有多个 DbContexts,我正在尝试启用迁移。当我指定完整的命令时,即:

Enable-Migrations -ContextTypeName Models.Account.AccountDetailDbContext

使用配置类创建了一个迁移文件夹,但随后我收到一条消息:

检查上下文是否针对现有数据库...

然后

在程序集“Portal.WebUI”中找不到迁移配置类型“Portal.WebUI.Migrations.Configuration”。

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

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

我尝试过使用-verbose 的命令,但它没有提供额外信息

如果我将 dbcontexts 和类复制到一个新项目中,那么一切正常,所以它一定是这个现有项目中的某些东西导致迁移失败,但我不知道它是什么。

【问题讨论】:

  • 您的 DbContext 是在 Portal.WebUI 项目中还是在任何其他数据访问项目中?
  • 尝试添加 -ContextProjectName Portal.WebUI 以启用迁移并确保项目引用上下文项目。
  • @SteveGreene 这对我有帮助。虽然我不得不使用 -ProjectName #ef6

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


【解决方案1】:

我通过在Add-Migration 之前添加EntityFrameworkCore\ 解决了这个问题,即最后的语句是:

EntityFrameworkCore\Add-Migration

在为您的新迁移命名之后。

【讨论】:

    【解决方案2】:

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

    1. 退出视觉工作室

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

    3. 重建解决方案

    然后错误被删除。我可以运行命令。

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

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

        【讨论】:

          【解决方案5】:

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

          解决方案似乎是 → 属性 → 签名:取消选中“签署程序集”,至少在执行迁移任务时。完成后打勾。

          【讨论】:

            【解决方案6】:

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

            【讨论】:

              【解决方案7】:

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

              【讨论】:

                【解决方案8】:

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

                【讨论】:

                  【解决方案9】:

                  我偶然发现了这个问题,经过无数小时的谷歌搜索和反复试验,解决我的具体问题要容易得多。

                  只要确保所有与 EF 相关的 nuget 包都是最新的。

                  我尝试了在这里找到的所有答案,但最终对我有用的是:选择所有与 EF 相关的 nuget 包 (就我而言)

                  Microsoft.EntityFrameworkCore.SqlServer
                  Microsoft.EntityFrameworkCore.Tools
                  Microsoft.EntityFrameworkCore.Design
                  EntityFramework
                  

                  并将它们全部更新到最新版本(以我为例) 问题是我下载的其中一个 NuGet 包的默认设置之一已过时且无效。

                  【讨论】:

                    【解决方案10】:

                    由于 EF 包的版本更新,我遇到了这个问题。我已经通过重新安装解决了:

                    1.Microsoft.EntityFrameworkCore.SqlServer

                    2.Microsoft.EntityFrameworkCore.Tools

                    3.Microsoft.EntityFrameworkCore.Design

                    4.Microsoft.EntityFrameworkCore

                    【讨论】:

                      猜你喜欢
                      • 1970-01-01
                      • 1970-01-01
                      • 2021-08-31
                      • 2016-11-17
                      • 1970-01-01
                      • 1970-01-01
                      • 2012-07-25
                      • 1970-01-01
                      • 1970-01-01
                      相关资源
                      最近更新 更多