首页 > 解决方案 > 实体框架从 Oracle 的 DUAL 获取 sysdate

问题描述

从 Oracle 的“DUAL”获取 SYSDATE 的最佳方法是什么?

我尝试使用 ExecuteSqlRawAsync 但我也需要返回值。

public async Task<DateTime> GetTime()
{
  // This does not return value and does not work
  await _dbContext.Database.ExecuteSqlRawAsync("Select sysdate from dual;");
}

另一种方法是创建一个类似的模型构建器。

public partial class Dual 
{
  public DateTime SysDate { get; set; }
}

public virtual DbSet<Dual> Dual { get; set; }

modelBuilder.Entity<Dual>(e => { ... });

并使用查询。

await _dbContext.Dual.FromSqlRaw("Select sysdate from dual;").ToListAsync();

是否有任何更简单或更好的方法可以从 Oracle 获取“SYSDATE”?我正在使用 EF Core 版本 5。

标签: c#.netentity-framework-core

解决方案


您可以尝试此线程中提到的解决方案:

Entity Framework 7:获取数据库时间

public async Task<DateTime> GetTime()
{
    DbConnection connection = _dbContext.Database.GetDbConnection();
    if (connection.State == ConnectionState.Closed)
    {
        await connection.OpenAsync();
    }

    var command = connection.CreateCommand();
    command.CommandText = "select sysdate from dual";
    return (DateTime) await command.ExecuteScalarAsync();
}

推荐阅读