Oracle EF Core — как настроить автоматическое создание столбца даты и времени?

Во-первых, это просто простая функция, которая поддерживается как минимум 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).

Если у вас есть какое-то решение для выполнения первого требования, поделитесь им, даже если второе требование невозможно. По крайней мере, тогда нам нужна какая-то работа. Спасибо.

Возможный дубликат Как автоматически заполнить CreatedDate и ModifiedDate?

Jan Paolo Go 20.06.2019 01:23

Спасибо, HasDefaultValueSql — это то, что вам нужно, это очень скрыто внутри ветки вопросов (какое-то более позднее обновление для EF Core).

Hopeless 22.06.2019 11:17
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
2
810
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Попробуй это -

protected override void OnModelCreating(ModelBuilder modelBuilder)
   {
          modelBuilder.Entity<Item>()
               .Property(b => b.CreatedDateUtc)
               .HasDefaultValueSql("GETUTCDATE()");
    }

на самом деле я нашел .HasDefaultValueSql из комментария к моему вопросу раньше. Также обратите внимание, что я использую Oracle, поэтому sql будет отличаться от «GETUTCDATE()», вместо этого мне пришлось использовать sys_extract_utc(systimestamp).

Hopeless 22.06.2019 11:16

Другие вопросы по теме