База данных EF Core GUID, сгенерированная в базовом классе Abstract - PullRequest
0 голосов
/ 26 июня 2018

Итак, мои сущности наследуются от такого класса:

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;

Как документы здесь говорят:

Свойству считается присвоенное значение, если оно не назначил значение по умолчанию для CLR (null для строки, 0 для int, Guid.Empty для гидов и т. д.).

Чего мне не хватает? Как я могу заставить это авто генерацию работать?

1 Ответ

0 голосов
/ 26 июня 2018

Таким образом, после всех проб и ошибок единственное решение, которое, кажется, работает:

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

Несмотря на то, что документы для EF Core не предполагают этого. Если я что-то упустил.

...