【问题标题】:Migration: No DbContext was found in assembly迁移:在程序集中找不到 DbContext
【发布时间】:2017-10-11 03:15:00
【问题描述】:

使用 VS Community 2017。我尝试创建初始迁移并显示错误消息:

Entity Framework Core 和 Entity Framework 6 都已安装。 Entity Framework Core 工具正在运行。对实体框架 6 使用“EntityFramework\Add-Migration”。 在程序集“Test_Project”中找不到 DbContext。确保您使用的是正确的程序集,并且该类型既不是抽象的也不是泛型的。

...我的 dbcontext 中的代码:

protected override void OnModelCreating(DbModelBuilder mb)
{
    base.OnModelCreating(mb);

    mb.Entity<Stuff>().ToTable("Stuff");

}

public DbSet<Stuff> Stuff{ get; set; }

【问题讨论】:

  • 您在使用带有 EF Core 的 ASP.NET Core MVC,还使用 ​​dotnet ef migrations add Initial/dotnet ef database update 命令而不是 PM 控制台中的 Add-Migration/Update-Database?这里有一些遗漏的地方需要说明。
  • 好吧,我想你可以先看看这个:docs.microsoft.com/en-us/aspnet/core/data/ef-mvc/migrations。如果您有带有 Core MVC 的 EF 6,请尝试使用 EF Core 并删除 EF 6 引用。
  • “Entity Framework Core 和 Entity Framework 6 都已安装。” - 这是故意的吗?因为我会竭尽全力避免这种情况。
  • 好的,我已经卸载了 EF Core,只保留了 EF 6。现在在我运行“启用迁移”和“添加迁移初始”之后一切正常。谢谢大家。
  • 当我收到此错误消息时,我使用了 'EntityFramework\Add-Migration' 和 'EntityFramework\Update-Database',但我想 Henk Holterman 说这两个框架不应该同时安装。 ..

标签: c# entity-framework model-view-controller dbcontext entity-framework-migrations


【解决方案1】:

在包管理器控制台中选择定义DbContext 的项目并运行命令add-migration initial。 例如:public class SomeContext : DbContext

【讨论】:

  • 如何选择项目?面临同样的问题,不知道如何在控制台中选择项目。
  • 在控制台中,您可以使用 cd(更改目录)命令进行导航
  • 在 Mac 上如何,包管理器控制台不可用?
  • 试试dotnet ef migrations add Initial
【解决方案2】:

您必须指定 DbContext 所在的项目名称。因此,只需在 Nugget PM 控制台上输入:Add-Migration MigrationName -Project YourProjectName

【讨论】:

  • 这个答案对我有帮助,因为我正在使用一个包含多个项目的解决方案。谢谢。
  • 我也在研究一个包含多个项目的解决方案,我将这个答案与update-database -Project YourProjectName 一起使用,它就像一个魅力。
  • 谢谢,为我工作。在我的例子中,起始项目是 .Api 而其他项目是 .Core 。我在 Core 中有所有迁移和数据库的东西。我收到如下错误:在程序集“.Api”中找不到 DbContext。确保您使用的是正确的程序集,并且该类型既不是抽象的也不是泛型的。我终于使用了命令:Add-Migration MigrationName -Project YourProjectName。 update-database -Project YourProjectName 它就像一个魅力。
  • 为我工作了 Visual Studio 2022 Preview .NET6 EF 6.0.0
【解决方案3】:

使用 nuget 包管理器,我安装了所有 EntityFrameworkCore 依赖项以及 EntityFramework 6 依赖项。 Visual Studio 使用的是 EF Core,而我需要它使用 EF 6。卸载所有 EF Core 依赖项解决了这个问题。

【讨论】:

    【解决方案4】:

    当我遇到这个问题时,我刚刚将现有项目重命名为“EF”,然后将所有命名空间重命名为“EF”。对我有用的是我将程序集名称更改为“EF”(项目属性/应用程序/程序集名称)以外的名称。我使用的是 VS Community 2019。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-06-21
      • 1970-01-01
      • 1970-01-01
      • 2019-09-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多