回滚 EF Core 迁移并不能完全恢复模型快照

Viv*_*Dev 20 entity-framework-core

我正在使用 EF Core 6.0.0-rc.2.21480.5。

我添加了一个空迁移,只是运行命令,Add-Migration ShouldBeEmpty而不对模型进行任何更改。

有必要检查此类空迁移,以确保正确合并从其他开发人员工作中提取的迁移。

正如所料,上台阶和下台阶都是空的。

public partial class ShouldBeEmpty : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    { }

    protected override void Down(MigrationBuilder migrationBuilder)
    { }
}
Run Code Online (Sandbox Code Playgroud)

模型快照文件也没有改变。

现在我使用删除迁移命令恢复Remove-Migration。新创建的文件 ShouldBeEmpty 会按预期作为回滚的一部分被删除。但当我注意到模型快照文件时,它已签出,当我进行比较时,我看到了这一点。

Ef Core 空迁移回滚问题

请注意以下事项。

b.ToTable("Sita", (string)null);
Run Code Online (Sandbox Code Playgroud)

所以当我回滚时它并不完全相同。(string)null 还被传递到 ToTable 方法调用。它似乎没有造成任何问题,但只是想知道我在这里错过了什么吗?

我注意到我的 csproj 文件启用了 nullable 。我禁用了它并尝试过,但这没有任何区别。

  <PropertyGroup>
    <TargetFramework>net6.0</TargetFramework>
    <Nullable>enable</Nullable>
    <ImplicitUsings>enable</ImplicitUsings>
  </PropertyGroup>
Run Code Online (Sandbox Code Playgroud)

Mon*_*raG 8

这不是一个解决方案,但是我在github的github string(null)中发现了这个问题:https: //github.com/dotnet/efcore/issues/26067efcore

它没有按计划关闭,因为[由于这一变化]“没有功能差异”,所以看起来他们不会费心做任何事情。