使用Linq to SQL SELECT @@ DBTS

如何使用Linq to SQL使用C#检索@@ DBTS?

这是我正在尝试的:

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

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

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

我怀疑你可能不得不使用常规的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(); } 

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

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

使用EF5 +和DbContext时,语法更简单:

 public long CurrentRowVersion() { return Database.SqlQuery("select convert(bigint, @@DBTS)").First(); }