add-migrations禁用自动生成文件中的空值



我最近将我的项目从。net 5更新到。net 7 -问题与此相关

当我运行[add-migration nameofmychanges]时,我得到了很多变化,而我没有改变任何东西。

在类ContextModelSnapshot.cs的顶部添加了一个#nullable禁用,我看到很多行,它想把我所有的实体改为nullable:false和default:0。

还可以看到很多这样的变化:

来自:

b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int")
.HasAnnotation("SqlServer:ValueGenerationStrategy", SqlServerValueGenerationStrategy.IdentityColumn);

:

b.Property<int>("Id")
.ValueGeneratedOnAdd()
.HasColumnType("int");
SqlServerPropertyBuilderExtensions.UseIdentityColumn(b.Property<int>("Id"));

还有一个例子:

来自:

b.HasOne("EFDataAccessLayer.Entities.User", "CreatedBy")
.WithMany()
.HasForeignKey("CreatedById");

:

b.HasOne("EFDataAccessLayer.Entities.User", "CreatedBy")
.WithMany()
.HasForeignKey("CreatedById")
.OnDelete(DeleteBehavior.Cascade)
.IsRequired();
  1. 如何停止行"#nullable disable"在自动生成的ContextModelSnapshot.cs中出现

  2. 这两个例子,当从。net5移动到。net7时,他们是否正常有变化,或者发生了什么?

如何停止行"#nullable disable"在自动生成的ContextModelSnapshot.cs中出现

我认为你不应该麻烦。

当我运行[add-migration nameofmychanges]时,我得到了很多变化,而我没有改变任何东西。这两个例子,当从。net5移动到。net7时,它们是否正常,或者发生了什么?

您应该检查迁移本身是否为空——如果是,那么您应该能够自由地忽略快照更改。如果有一些(我假设会有)-您需要禁用数据库项目的可空引用类型(例如<Nullable>enable</Nullable>),或者通过将相应属性更改为NRE(即string->string?,也可能有一种方法来禁用约定,但我不记得我的头)

阅读更多:

  • 实体属性-约定
  • EF Core使用可空引用类型

相关内容

  • 没有找到相关文章

最新更新