【问题标题】:No context type was found in the assembly在程序集中找不到上下文类型
【发布时间】:2012-10-13 11:23:49
【问题描述】:

我首先使用带有代码的 .NET 4.0、MVC3 和 EF5。

我的解决方案分为三个项目,其依赖关系如下所示:

Project.Web -> Project.BLL -> Project.DAL

Project.DAL 层包含我的实体框架数据上下文类和我的所有实体,但我的启动项目是 Project.Web,因此它包含我的 Web.config、连接字符串和实际的 SQL 紧凑型数据库。

我正在尝试启用迁移,以便在不擦除现有数据的情况下将新表添加到我的 EF 模型。但是,当我运行“启用迁移”时,我得到了

No context type was found in the assembly 'Project.Web'.

如果我将启动项目设置为Project.DAL,则错误变为

Could not load assembly 'Project.Web'. (If you are using Code First Migrations inside Visual Studio this can happen if the startUp project for your solution does not reference the project that contains your migrations. You can either change the startUp project for your solution or use the -StartUpProjectName parameter.)

有谁知道为什么会出现这个错误或者我可以做些什么来修复它?

【问题讨论】:

    标签: asp.net entity-framework connection-string data-access-layer entity-framework-5


    【解决方案1】:

    我最终在this 问题中找到了答案。基本上,在包管理器控制台中有一个“默认项目”下拉菜单。您需要将此设置为包含您的 EF 上下文的项目。

    【讨论】:

    • 一定要放大你的包管理器控制台窗口,否则它可能不在窗口工具栏的右侧,你会像我一样错过它。
    • 有没有办法在某处的配置中进行设置?我正在尝试在发布到 azure 时设置自动迁移,但它似乎失败了,因为它在启动项目而不是 DAL 上运行 update-database 命令
    • 谢谢。现在看起来很明显:)
    【解决方案2】:

    我找到了类似的帖子:Enable Migrations with Context in Separate Assembly?

    例子:

    enable-migrations -ContextProjectName MyProject.DBContexts -contexttypename MyProject.DBContexts.MyContextName -Verbose
    

    【讨论】:

      【解决方案3】:

      谁像我一样犯了这个错误:

      你的上下文类必须继承自DbContext,就像这样:

      public class DirectorRequestContext : DbContext
      {
          public DbSet<DirectorRequest> DirectorRequests { get; set; }
      }
      

      【讨论】:

        【解决方案4】:

        以上其他答案均未回答我的问题。

        我最终放弃了包管理器控制台,因为它似乎使用的是 EF6 而不是 EFCore...

        幸运的是,您可以从普通的 PowerShell 运行这些实体框架命令:

        C:\MyRepository\MyProject dotnet ef migrations add InitialDbCreation
        

        (确保您位于包含DbContext 继承的项目目录中。

        最后,我得到了真正的错误:

        Your startup project 'FantasyFitness' doesn't reference Microsoft.EntityFrameworkCore.Design. 
        This package is required for the Entity Framework Core Tools to work. 
        Ensure your startup project is correct, install the package, and try again.
        

        所以,我转到项目的“管理 NuGet 包”并安装 Microsoft.EntityFrameworkCore.Design,关闭我所有可能锁定文件的 IDE,然后它终于工作了。

        请注意,我什至不必运行Enable-Migration 命令来让它工作......这很神奇。

        【讨论】:

          【解决方案5】:

          如果由于某种原因您的连接类不在项目中,也会发生这种情况。所以右键单击并“添加到项目”可以解决这个问题。

          【讨论】:

            猜你喜欢
            • 2015-11-23
            • 1970-01-01
            • 2020-04-19
            • 2013-05-06
            • 2021-08-31
            • 2011-12-11
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多