运行代码首次迁移时,在程序集中找不到上下文类型

时间:2017-06-25 13:51:47

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

在Package Manager Console中运行命令enable-migrations时出现此错误:

  

在程序集'Vidly'中找不到上下文类型

我正在使用Visual Studio 2017.如何解决?

4 个答案:

答案 0 :(得分:9)

  • 当您使用2017年视觉工作室时,我假设您可能已经使用过 更高版本的Entity Framework(6.2.0)。
  • 实体框架在启用迁移之前需要一个上下文。

要解决此问题,请参阅以下步骤。

  1. 在Models文件夹中创建一个MyDBContext类(您可以使用该类的任何名称)。请在下面找到代码段。
  2. 为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. 现在打开包管理器控制台并输入以下命令以启用 迁移。

      enable-migrations -contexttypename MyDBContext (MyDBContext是我们在step1中创建的类的名称)

    2. 希望这会有所帮助:)

答案 1 :(得分:3)

确保您已在程序包管理器控制台中设置了默认项目,该项目位于顶部标签处,并带有下拉列表。此项目应包含实体框架上下文

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

最后你的代码应该像这样,

Enable-Migrations -ProjectName MyContextProjectNameHere -StartUpProjectName MyStartUpProjectNameHere -Verbose

希望有所帮助:)

答案 2 :(得分:0)

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

  1. 未安装的EntityFramework NuGet软件包和
  2. 安装了 EntityFrameworkCore NuGet包,entityFrameworkCore.Sqlserver.design和EntityFrameworkcore.tools。

这为我解决了问题

答案 3 :(得分:0)

请添加包:

        <PackageReference Include="Microsoft.EntityFrameworkCore" Version="5.0.7" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="5.0.7" />
        <PackageReference Include="Microsoft.EntityFrameworkCore.Tools" Version="5.0.7">

DataLayer .csproj 项目中 接着: 请安装在包下:

    1) Install-Package Microsoft.EntityFrameworkCore.Tools -Version 5.0.7
    2) Install-Package Microsoft.AspNetCore.Razor.Design
    3) Add-Migrations initialDatabase

Microsoft.AspNetCore.Razor.Design 在 webapi 项目中。 see my project