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());
我的 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());