2009-02-09 93 views
2

如何使用Linq to SQL來使用C#檢索@@ DBTS?SELECT @@ DBTS使用Linq to SQL

這裏就是我想:

的IEnumerable < System.Data.Linq.Binary>結果= db.ExecuteQuery < System.Data.Linq.Binary>(@ 「SELECT @@ DBTS」);

但是,這會導致「類型'System.Data.Linq.Binary'必須聲明一個默認(無參數)構造函數才能在映射期間構造。」

如果我嘗試使用byte [],我會得到相同的錯誤,但使用byte []而不是System.Data.Linq.Binary。

回答

3

我懷疑你可能需要使用常規的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(); 
}