如何撤消 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。
如何撤消 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。