Во-первых, это просто простая функция, которая поддерживается как минимум EF Core для SQL Server, но для Oracle (поставщик, реализованный Oracle) я не уверен, поддерживается ли она.
Просто у меня есть такой класс сущности:
public class Item {
public int Id {get;set;}
public DateTime CreatedDateUtc {get;set;}
}
Проблема заключается в том, как настроить ядро EF для автоматического создания даты базы данных CreatedDateUtc
при каждой вставке без необходимости устанавливать это значение на стороне клиента?
Вот что я пробовал:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Item>()
.Property(e => e.CreatedDateUtc)
.ValueGeneratedOnAdd();
}
Но после запуска add-migration
сгенерированный класс просто пустой:
protected override void Up(MigrationBuilder migrationBuilder)
{
}
protected override void Down(MigrationBuilder migrationBuilder)
{
}
Так что на самом деле он ничего не делает с этой конфигурацией (не поддерживается?).
Кроме того, первое, что нужно сделать, это сгенерировать значение даты и времени, а второе — сгенерировать значение даты и времени универсальное глобальное время. Я верю в выполнимость первого требования, тогда как второе кажется невыполнимым, по крайней мере, с Oracle EF Core? (название нужета: Oracle.EntityFrameworkCore
).
Если у вас есть какое-то решение для выполнения первого требования, поделитесь им, даже если второе требование невозможно. По крайней мере, тогда нам нужна какая-то работа. Спасибо.
Спасибо, HasDefaultValueSql
— это то, что вам нужно, это очень скрыто внутри ветки вопросов (какое-то более позднее обновление для EF Core).
Попробуй это -
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.Entity<Item>()
.Property(b => b.CreatedDateUtc)
.HasDefaultValueSql("GETUTCDATE()");
}
на самом деле я нашел .HasDefaultValueSql
из комментария к моему вопросу раньше. Также обратите внимание, что я использую Oracle, поэтому sql будет отличаться от «GETUTCDATE()», вместо этого мне пришлось использовать sys_extract_utc(systimestamp)
.
Возможный дубликат Как автоматически заполнить CreatedDate и ModifiedDate?