怎样寻求使用实体框架当前日期时间数据库服务器?
-
24-09-2019 - |
题
我有与我想与从数据库中,而不是“应用”服务器执行的应用的当前日期时间更新的ModifiedDateTime属性的实体。
我每次想更新或人添加到我的SQL Server 2008我要填写ModifiedDateTime提交的DATEBASE。它不象我可以改变更新查询与数据适配器命令时,我的数据集工作,并定义为我的ModifiedDateTime申请是GETDATE()。我创建了存储函数返回我GETDATE的value()方法,但我必须在其所有的返回值,如int,字符串或没有价值,已经只是实体值作为人例如在我的情况下,导入过程中的问题。这是为什么?
无论如何,这将是很大的帮助,如果你能帮助我从数据库中检索服务器的当前日期时间。
解决方案
是否有一个原因,你就不能推它到你的数据库?如果包括DateTime.Now在实体查询时,它会推下来(GETDATE)到数据库中。
实施例LINQ实体
var dQuery = dbContext.CreateQuery<DateTime>("CurrentDateTime() ");
DateTime dbDate = dQuery.AsEnumerable().First();
SQL生成..
SELECT GetDate() AS [C1] FROM ( SELECT cast(1 as bit) AS X ) AS [SingleRowTable1]
可能是一个更好的方式来做到这一点?
其他提示
这是@Nix响应于EF4的更新:
var dateQuery = dbContext.Database.SqlQuery<DateTime>("SELECT getdate()");
DateTime serverDate = dateQuery.AsEnumerable().First();
的更新.NET核心2.0
var dual = databaseContext
.Set<Dual>()
.FromSql("SELECT -1 AS Id, GETDATE() AS DateTime")
.First();
在假实体
public class Dual
{
public int Id { get; set; }
public DateTime DateTime { get; set; }
}
在VS 2008中,如果添加一个函数模板返回一个标量,它不添加代码,使其易于使用。您需要直接访问函数模板 - 我使用部分类构建,易于使用的需要的方法。他们在VS2010解决了这个问题。
public DateTime GetDateTime()
{
var returnValue = new DateTime();
using (var connection = new EntityConnection(Connection.ConnectionString))
{
connection.Open();
using (var command = connection.CreateCommand())
{
command.CommandText = "myStoredProc";
command.CommandType = CommandType.StoredProcedure;
try
{
returnValue = Convert.ToDateTime(command.ExecuteScalar());
}
finally
{
connection.Close();
}
}
}
return returnValue;
}
的更多信息: 函数导入与非实体返回类型
不隶属于 StackOverflow