首页 > 解决方案 > 如何撤消 EF Core 中的“HasDefaultValueSql”?

问题描述

如何撤消HasDefaultValueSqlEF Core 中的操作?

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

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

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

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

上面的代码我添加到一个新类中,它实现了IEntityTypeConfiguration. 我创建了DbContextfor 测试,它继承自 app DbContext。现在在DbContextfor 测试中,OnModelCreating我首先应用基类配置,然后是使用ValueGeneratedOnAdd()调用的配置。

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

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

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

标签: c#entity-frameworksqliteef-fluent-api

解决方案


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


推荐阅读