Я обновляю 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.
Есть предложения, почему это не работает? Спасибо.