迁移:在程序集中找不到 DbContext

问题描述 投票:0回答:7

使用 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; }
c# entity-framework model-view-controller dbcontext entity-framework-migrations
7个回答
40
投票

在包管理器控制台中,选择定义了

DbContext
的项目并运行命令
add-migration initial
。 例如:
public class SomeContext : DbContext


28
投票

您必须指定

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


2
投票

使用 nuget 包管理器,我安装了所有 EntityFrameworkCore 依赖项以及 EntityFramework 6 依赖项。当我需要使用 EF 6 时,Visual Studio 正在使用 EF Core。卸载所有 EF Core 依赖项解决了此问题。


0
投票

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


0
投票

只需关闭 Visual Studio 并重新启动项目,然后再次编写命令即可。它对我有用两次


0
投票

我通过重命名项目解决了这个问题,之前它与解决方案的名称一致。


0
投票

是的,只需关闭 Visual Studio 并重新打开并执行命令即可,如果您使用 PowerShell 进行迁移,请使用以下命令。

dotnet ef migrations add Initial

如果需要重置数据库

dotnet ef database drop --force --context DbContext_ClassName
© www.soinside.com 2019 - 2024. All rights reserved.