使用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(); }