我如何使用Linq到SQL来使用C#检索@@ DBTS?
这是我正在尝试的内容:
IEnumerable
但是,这导致“类型'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<Int64> results =
db.ExecuteQuery<Int64>(@"SELECT CONVERT(bigint,@@DBTS)");
Int64 latestver = results.First();
以及使用EF5 +和DbContext时更简单的语法:
public long CurrentRowVersion()
{
return Database.SqlQuery<long>("select convert(bigint, @@DBTS)").First();
}