entity-framework - 在抽象基类中生成的 EF Core GUID 数据库
问题描述
所以我的实体继承自这样的类:
public abstract class EntityBase
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid UuId { get; set; }
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[Timestamp]
public byte[] RowVersion { get; set; }
}
Id 字段工作正常,任何插入的Key
Uuid 始终为NULL
. 我试过添加:
builder.Entity<Series>().Property(x => x.UuId).ValueGeneratedOnAdd();
不工作。
自从添加以来,[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
我已经尝试创建和应用新的迁移。
这也行不通。
我尝试将其添加到我的EntityBase
课程中:
public Guid UuId { get; set; } = Guid.Empty;
正如这里的文档所说:
如果没有为属性分配 CLR 默认值(字符串为 null,int 为 0,Guid 为 Guid.Empty,等等),则认为该属性已分配了一个值。
我错过了什么?我怎样才能让这个自动生成工作?
解决方案
因此,经过反复试验,唯一可行的解决方案是:
builder.Entity<Series>().Property(x => x.UuId).HasDefaultValueSql("NEWID()");
即使 EF Core 的文档不建议这样做。除非我错过了什么。
推荐阅读
- python-3.x - 在 Python 中创建新列并填充布尔值
- python - Python Post 请求到 API
- ios - 将应用程序上传到 iTunes 时出现错误。错误 ITMS-90046:“无效的代码签名权利”。
- c# - 具有 C#8 默认接口实现/特征的事件继承
- python - pyGAM`y 数据不在 logit 链接函数的域中`
- java - Apache Flink连接elasticsearch的问题
- c - Allocating dynamic memory for a variable inside a structure
- angular - 如何在特定时间段内移动高图的 x 轴?
- ios - 如何在 iOS 上使用 Bonjour 让连接到我的 iPhone 热点的其他设备知道我的 iOS 应用托管的服务器的 IP 地址和端口?
- java - TLSv1.1 服务器问候延迟