我有与我想与从数据库中,而不是“应用”服务器执行的应用的当前日期时间更新的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;
    }

的更多信息: 函数导入与非实体返回类型

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top