Я попробовал оба атрибута:
[Key]
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public Guid Id { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public DateTime CreatedDate { get; set; }
[DatabaseGenerated(DatabaseGeneratedOption.Computed)]
public DateTime LastUpdated { get; set; }
И Fluent API:
modelBuilder.Entity<Customer>().Property(b => b.CreatedDate).HasDefaultValue().ValueGeneratedOnAdd();
modelBuilder.Entity<Customer>().Property(b => b.LastUpdated).HasDefaultValue().ValueGeneratedOnAddOrUpdate();
modelBuilder.Entity<Customer>().Property(b => b.Id).HasDefaultValue().ValueGeneratedOnAdd();
После миграции и обновления в базе данных ничего не происходит - я бы ожидал триггера или ограничения здесь.
Читая документацию , в ней говорится:
Поставщики баз данных могут автоматически настраивать генерацию значений для некоторых типов свойств, но другие могут потребовать, чтобы вы вручную настраивали, какзначение генерируется.Например, при использовании SQL Server автоматически генерируются значения для свойств GUID (с использованием алгоритма последовательного GUID SQL Server).Однако, если вы укажете, что свойство DateTime генерируется при добавлении, необходимо указать способ создания значений.Один из способов сделать это - настроить значение по умолчанию для GETDATE (), см. Значения по умолчанию.
Хорошо, но как тогда я могу, используя code-first, создать соответствующую логику в базе данных?,Я не хочу создавать значения по умолчанию в моей модели, потому что тогда я буду зависеть от прохождения моего API.Я думал, что DatabaseGeneratedOption что-то сделает ... сейчас это кажется довольно бесполезным.
Я видел некоторые посты, создающие триггер в методе Up (), но я на самом деле не считаю папку миграции отличнойместо для ввода кода конфигурации.