c# - 如何撤消 EF Core 中的“HasDefaultValueSql”?
问题描述
如何撤消HasDefaultValueSql
EF Core 中的操作?
我有一个实现IEntityTypeConfiguration
接口的类。在那节课上,我有:
builder.Property(myProp => myProp.Id).HasDefaultValueSql("newid()");
现在,它newid()
是特定于 SQL Server 的。在测试中我使用 SQLite 并希望以Id
不同的方式生成值。我发现使用 SQLite 我可以使用:
builder.Property(myProp => myProp.Id).ValueGeneratedOnAdd();
上面的代码我添加到一个新类中,它实现了IEntityTypeConfiguration
. 我创建了DbContext
for 测试,它继承自 app DbContext
。现在在DbContext
for 测试中,OnModelCreating
我首先应用基类配置,然后是使用ValueGeneratedOnAdd()
调用的配置。
现在的问题是HasDefaultValueSql
没有消失,我得到了错误SQLite Error 1: 'unknown function: newid()'.
。所以,我希望能够做类似的事情:
builder.Property(myProp => myProp.Id).UndoDefaultValueSetup().ValueGeneratedOnAdd();
有可能吗?此外,为了避免这里的 xy 问题,我愿意接受有关如何在 SQLite + EF Core 配置中生成 GUID 的建议。
解决方案
使用条件代码,并检查 context.Database.IsSqlServer。
推荐阅读
- ssl - phpmyadmin 配置期间的 SSL 警告
- angular - 如何同时检测查询参数和片段的变化(或至少以明确定义的顺序)?
- azure - az devops login 无法使用密钥环存储 PAT;回退到文件存储
- spring - Spring Security 中@PreAuthorize 和@PostAuthorize 有什么区别
- python-3.6 - Python 3.6 JSON 字符串到对象的转换
- c# - 如何用列表填充选择器
- string - '格式字符串只能是“G”、“g”、“X”、“x”、“F”、“f”、“D”或“d”。
- python - 如何使用带有 Python 可执行文件的 Mac finder 导入图像
- delphi - Delphi,克隆一个包含孩子的 3DObject
- scala - 重载方法值 Sin 有替代方案