【问题标题】:No context type was found in the assembly when running code first migration运行代码首次迁移时,在程序集中未找到上下文类型
【发布时间】:2017-06-25 13:51:47
【问题描述】:

在包管理器控制台中运行命令 enable-migrations 时,出现此错误:

在程序集“Vidly”中未找到上下文类型

我使用的是 Visual Studio 2017。如何解决?

【问题讨论】:

  • 在“包管理器控制台”窗口中,将“默认项目”更改为包含您的上下文的实际项目
  • @haim770 我的项目名称只有一个选项。
  • 能否请您发布您尝试迁移的控制台代码?

标签: asp.net-mvc visual-studio entity-framework-6 visual-studio-2017


【解决方案1】:
  • 当您使用 Visual Studio 2017 时,我假设您可能已经使用过
    实体框架(6.2.0)的更高版本。
  • 实体框架在启用迁移之前需要上下文。

为了解决这个问题,请找到以下步骤。

  1. 在 Models 文件夹中创建一个 MyDBContext 类(您可以为该类使用任何名称)。请在下面找到代码 sn-p。

为 DbContext 引用添加此命名空间 System.Data.Entity

using System.Data.Entity; 
    namespace Vidly.Models
    {
        public class MyDBContext:DbContext
        {
            public MyDBContext()
            {

            }
            public DbSet<Customer> Customers { get; set; } // My domain models
            public DbSet<Movie> Movies { get; set; }// My domain models
        }
    }
  1. 现在打开包管理器控制台并输入以下命令以启用 迁移。

    启用迁移 -contexttypename MyDBContext (MyDBContext是我们在step1中创建的类的名字)

希望这会有所帮助:)

【讨论】:

    【解决方案2】:

    确保您已设置 默认项目,该项目位于包管理器控制台的顶部标签中,并带有 下拉菜单。这个项目应该包含你的Entity Framework context

    您可以查看此post 以查找默认项目下拉菜单的位置。

    所以最后你的代码应该是这样的,

    Enable-Migrations -ProjectName MyContextProjectNameHere -StartUpProjectName MyStartUpProjectNameHere -Verbose
    

    希望对你有帮助:)

    【讨论】:

    • 什么是 MyContextProjectNameHere 和 MyStartUpProjectNameHere?
    • 在 myContextProjectNameHere 的位置,写下包含上下文类的项目名称,并在 myStartUpProjectNameHere 的位置写下您的启动项目名称。我这样写是因为您可以理解和替换名称。
    【解决方案3】:

    我遇到过几次这个问题,就我而言

    1. 已卸载 EntityFramework NuGet 包和
    2. 已安装 EntityFrameworkCore NuGet 包、entityFrameworkCore.Sqlserver.design 和 entityframeworkcore.tools。

    这解决了我的问题

    【讨论】:

      猜你喜欢
      • 2016-05-15
      • 1970-01-01
      • 1970-01-01
      • 2012-10-13
      • 2014-06-23
      • 2017-01-31
      • 2015-11-23
      • 1970-01-01
      • 2015-08-12
      相关资源
      最近更新 更多