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

C# 如何撤消EF Core中的“HasDefaultValueSql”?,c#,entity-framework,sqlite,ef-fluent-api,C#,Entity Framework,Sqlite,Ef Fluent Api,如何撤消EF Core中的HasDefaultValueSql 我有一个实现IEntityTypeConfiguration接口的类。在这门课上,我有: builder.Property(myProp => myProp.Id).HasDefaultValueSql("newid()"); 现在,newid()是特定于SQL Server的。在测试中,我使用SQLite并希望以不同的方式生成Id值。我发现使用SQLite,我可以使用: builder.Property

如何撤消EF Core中的
HasDefaultValueSql

我有一个实现
IEntityTypeConfiguration
接口的类。在这门课上,我有:

builder.Property(myProp => myProp.Id).HasDefaultValueSql("newid()");
现在,
newid()
是特定于SQL Server的。在测试中,我使用SQLite并希望以不同的方式生成
Id
值。我发现使用SQLite,我可以使用:

builder.Property(myProp => myProp.Id).ValueGeneratedOnAdd();
我将上面的代码添加到一个新类中,该类实现了
IEntityTypeConfiguration
。我为测试创建了
DbContext
,它继承自app
DbContext
。现在在
DbContext
中,对于
OnModelCreating
中的测试,我首先应用基类配置,然后应用使用
ValueGeneratedOnAdd()调用的配置

现在的问题是,
hasdaultvaluesql
没有消失,我得到了错误
SQLite错误1:“未知函数:newid()”。
。因此,我希望能够做一些类似的事情:

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

有可能吗?另外,为了避免这里的x-y问题,我愿意听取关于如何在SQLite+EF核心配置中生成GUID的建议。

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

效果良好。非常感谢。