使用Linq to SQL选择@@ DBTS

问题描述 投票:3回答:3

我如何使用Linq到SQL来使用C#检索@@ DBTS?

这是我正在尝试的内容:

IEnumerable 结果= db.ExecuteQuery (@“ SELECT @@ DBTS”);

但是,这导致“类型'System.Data.Linq.Binary'必须声明默认(无参数)构造函数,以便在映射期间进行构造。”

如果尝试使用byte [],则会收到相同的错误,但使用byte []而不是System.Data.Linq.Binary。

c# asp.net linq-to-sql
3个回答
4
投票

我怀疑您可能必须使用常规的ADO.NET和ExecuteReader / ExecuteScalar ...

using(SqlConnection conn = new SqlConnection(CONN_STRING))
using(SqlCommand cmd = conn.CreateCommand())
{
    cmd.CommandText = "SELECT @@DBTS";
    cmd.CommandType = CommandType.Text;
    conn.Open();
    byte[] ts = (byte[]) cmd.ExecuteScalar();
    foreach (byte b in ts)
    {
        Console.Write(b.ToString("X2"));
    }
    Console.WriteLine();
}

3
投票

我发现了另一种使用Linq to SQL的方法:

        IEnumerable<Int64> results =
            db.ExecuteQuery<Int64>(@"SELECT CONVERT(bigint,@@DBTS)");
        Int64 latestver = results.First();

0
投票

以及使用EF5 +和DbContext时更简单的语法:

public long CurrentRowVersion()
{
  return Database.SqlQuery<long>("select convert(bigint, @@DBTS)").First();
}
© www.soinside.com 2019 - 2024. All rights reserved.