На случай, если кто-то столкнется с той же проблемой. Я получил следующее:
Создайте новый класс, содержащий свойство DateTime
public class SystemDateTime
{
/// <summary>
/// System datetime from the server.
/// </summary>
public DateTime DateTime { get; set; }
}
Добавьте DbSet
типа SystemDateTime
к модели
/// <summary>
/// Set for getting the current date time from the database.
/// </summary>
public DbSet<SystemDateTime> SystemDateTimes { get; set; }
Примечание: в EFCore 3.1 он должен иметь тип DbSet
, но в EFCore 2.? этому типу набора посвящен другой тип, называемый DbQuery
. См. Статью Здесь .
Добавьте сопоставление для конструктора моделей
modelBuilder.Entity<SystemDateTime>().HasNoKey();
modelBuilder.Entity<SystemDateTime>().Property<DateTime>(x => x.DateTime).HasColumnName(@"DateTime").HasColumnType(@"TIMESTAMP").IsRequired().ValueGeneratedNever();
Использование DbSet
' s FromSqlRaw
для запроса к базе данных
List<SystemDateTime> systemDateTime = context.SystemDateTimes.FromSqlRaw("SELECT TO_CHAR (SYSDATE, 'MM-DD-YYYY HH24:MI:SS') \"DateTime\" FROM DUAL").ToList();
Это вернет список из одного элемента, поэтому используйте First()
или Single
, чтобы получить необходимое значение.