После обновления до EF Core 2.2 => 3.1 идентификатор Guid больше не генерируется DbSet.Add () - PullRequest
1 голос
/ 09 апреля 2020

Я обновляю EF Core 2.2 до EF Core 3.1. У меня есть объект Patient с идентификатором GUID:

class Patient { 
   public Guid Id { get; set; }
   public string FirstName { get; set; }
   public string LastName { get; set; }
}

Для этого типа определен DbSet:

public DbSet<Patient> Patients { get; set; }

В EF 2.2, когда я добавил new Patient, идентификатор будет автоматически генерироваться при добавлении объекта в DbSet:

// newPatient.Id -> 00000000-0000-0000-0000-000000000000
ctx.Patients.Add(newPatient);
// newPatient.Id -> C1D5ACB8-A4C9-4680-AF2F-BF5E5B0AC1B6     <=== GUID generated

Теперь в EF 3.1 идентификатор не генерируется автоматически при добавлении:

// newPatient.Id -> 00000000-0000-0000-0000-000000000000
ctx.Patients.Add(newPatient);
// newPatient.Id -> 00000000-0000-0000-0000-000000000000     <=== still an empty GUID

Это, очевидно, нарушает мой код.

В EF Core 3.0 есть критическое изменение " Ключи строк и байтового массива не генерируются клиентом по умолчанию ". Однако это критическое изменение указывает ключи строки и байтового массива, а не ключи GUID. Кроме того, я попытался рекомендовать меры по снижению риска с помощью FluentAPI и аннотаций данных, и это не решило мою проблему (по-прежнему не генерируется GUID).

Я использую dotConnect для Oracle поставщика базы данных v9.11. Там я не нашел каких-либо серьезных изменений, которые могли бы повлиять на это.

Конечно, я могу явно назначить идентификатор GUID в своем коде, но я бы хотел, чтобы это работало так же, как раньше в EF Core 2.2.

Есть предложения, почему это не работает? Спасибо.

...