在抽象基类中生成的EF核心GUID数据库

时间:2018-06-26 15:26:55

标签: entity-framework ef-code-first ef-migrations ef-core-2.0

所以我的实体是从这样的类继承的:

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; }
}

Key Id字段工作正常,任何插入的Uuid始终为NULL。我尝试添加:

builder.Entity<Series>().Property(x => x.UuId).ValueGeneratedOnAdd();

不起作用。

自从添加[DatabaseGenerated(DatabaseGeneratedOption.Identity)]以来,我一直尝试创建和应用新的迁移。

这也不起作用。

我尝试将其添加到我的EntityBase类中:

public Guid UuId { get; set; } = Guid.Empty;

docs here说:

  

如果属性未赋值,则认为该属性已赋值   分配CLR默认值(字符串为null,整数为0,Guid.Empty   用于Guid等)。

我想念什么?我如何使这种自​​动生成工作?

1 个答案:

答案 0 :(得分:0)

因此,经过反复试验,似乎唯一可行的解​​决方案是:

builder.Entity<Series>().Property(x => x.UuId).HasDefaultValueSql("NEWID()");

即使EF Core的文档没有建议这样做。除非我错过了什么。