如何撤消 EF Core 中的“HasDefaultValueSql”?

How can I undo the `HasDefaultValueSql` in EF Core?

如何撤消 EF Core 中的 HasDefaultValueSql

我有一个 class 实现了 IEntityTypeConfiguration 接口。在那个 class 我有:

builder.Property(myProp => myProp.Id).HasDefaultValueSql("newid()");

现在,newid() 是 SQL 服务器特定的。在测试中,我正在使用 SQLite 并希望以不同的方式生成 Id 值。我发现使用 SQLite 我可以使用:

builder.Property(myProp => myProp.Id).ValueGeneratedOnAdd();

上面的代码我加进了一个新的class,它实现了IEntityTypeConfiguration。我为测试创建了 DbContext,它继承自应用程序 DbContext。现在在 DbContext 中用于 OnModelCreating 中的测试,我首先应用基础 class 配置,然后是使用 ValueGeneratedOnAdd() 调用的配置。

现在的问题是 HasDefaultValueSql 没有消失,我收到错误 SQLite Error 1: 'unknown function: newid()'.。所以,我希望能够做类似的事情:

builder.Property(myProp => myProp.Id).UndoDefaultValueSetup().ValueGeneratedOnAdd();

有可能吗?此外,为了避免这里的 x-y 问题,我愿意接受有关如何在 SQLite + EF Core 配置中生成 GUID 的建议。

使用条件代码,并检查 context.Database.IsSqlServer。