使用 Entity Framework Core 添加迁移时出现错误

Aur*_*ang 8 c# entity-framework-core

我构建了一个控制台项目并首先使用代码将模型映射到数据库。当我运行 的命令时Add-Migration InitialMigration,出现错误:

来自程序集“Microsoft.EntityFrameworkCore.SqlServer, Version=3.1.5.0, Culture=neutral, PublicKeyToken=adb9793829ddae60”的“Microsoft.EntityFrameworkCore.SqlServer.Query.Internal.SqlServerSqlTranslatingExpressionVisitorFactory”类型中的方法“Create”没有实现。

DbContext是:

class ActorDbContext : DbContext
{
    public DbSet<Actor> Actors { get; set; }

    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer(
            @"Server=(localdb)\mssqllocaldb;Database=ActorDb;"
            + "Trusted_Connection=True;");
    }
}
Run Code Online (Sandbox Code Playgroud)

实体是:

public class Actor
{
    public int Id { get; set; }
    public String Name { get; set; }
    public int Age { get; set; }
    public bool AcademyWinner { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

WBu*_*uck 16

我刚刚使用VS for Mac. 我的问题是我安装了以下版本的软件包:

  • Microsoft.EntityFrameworkCore.Tools 5.0.0-preview.8.20407.4
  • Microsoft.EntityFrameworkCore.Design 5.0.0-preview.8.20407.4
  • Microsoft.EntityFrameworkCore.SqlServer 3.1.8

注意使用的不同版本。为了解决这个问题,我卸载了preview软件包的版本并安装了最新的稳定版本。

  • Microsoft.EntityFrameworkCore.Tools 3.1.8
  • Microsoft.EntityFrameworkCore.Design 3.1.8
  • Microsoft.EntityFrameworkCore.SqlServer 3.1.8

再次记下所有 3 个软件包的版本。一旦我安装了每个软件包的正确版本,问题就解决了,我的Add-Migration工作正常了。


小智 8

您必须包含以下所有软件包才能具有相同版本:

Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Run Code Online (Sandbox Code Playgroud)

我试过了,运行良好。


小智 6

我正在添加 [mohammed-abdelwahab][1] 的答案,以下软件包需要是最新更新:

Microsoft.EntityFrameworkCore
Microsoft.AspNetCore.Identity.EntityFrameworkCore
Microsoft.EntityFrameworkCore.Design
Microsoft.EntityFrameworkCore.SqlServer
Run Code Online (Sandbox Code Playgroud)

为此,右键单击项目 --> 管理 Nuget 包 --> 单击更新,然后一一更新,或者添加(如果不存在),如下所示

 PM> Install-Package Microsoft.EntityFrameworkCore.SqlServer
 PM> Install-Package Microsoft.EntityFrameworkCore.Tools
 PM> Add-Migration InitialMigration
Run Code Online (Sandbox Code Playgroud)

祝你好运 :)


小智 3

也许您正在尝试混合不同的版本。确保所有版本均一致。