Date/time 来自数据库作为我上下文中的函数

Date/time from the database as a function in my context

我的 DBContext 中需要一个函数,它告诉我数据库本身的当前 date/time。
SQL 有一个标准函数“CURRENT_TIMESTAMP”,所以很容易得到它。

但是我想要在我的 DBContext 中使用一个函数 ServerDateTime(),但我遇到了类似这样的问题:

modelBuilder.HasDbFunction(typeof(PortalContext).GetMethod(nameof(ServerDateTime), ???));

那么,我该怎么做呢?或者有没有更实用的方案来解决这个问题?

(我需要服务器 date/time,因为服务器将在不同的机器上,我的代码想知道时差。)

为您的函数定义静态 class

public static class MyDbFunctions
{
    public static DateTime CurrentTimeStamp()
    {
        throw new NotImplementedException();
    }
}

在 DbContext

中注册 CurrentTimeStamp 函数
modelBuilder.HasDbFunction(() => MyDbFunctions.CurrentTimeStamp())
    .IsBuiltIn()
    .HasTranslation(e =>
    {
        return new SqlFragmentExpression("CURRENT_TIMESTAMP");
    });

在查询中使用

query = query.Where(x => x.Date < MyDbFunctions.CurrentTimeStamp());