ВЫБЕРИТЕ @@ DBTS, используя Linq to SQL

2

Как я могу использовать Linq to SQL для извлечения @@DBTS с помощью С#?

Вот что я пытаюсь:

IEnumerable < System.Data.Linq.Binary > results = db.ExecuteQuery < System.Data.Linq.Binary > (@ "SELECT @@DBTS" );

Однако это приводит к тому, что "Тип. System.Data.Linq.Binary" должен объявить конструктор по умолчанию (без параметров), чтобы его можно было построить во время отображения. "

Если я пытаюсь использовать byte [], я получаю ту же ошибку, но с байтом [] вместо System.Data.Linq.Binary.

Теги:
linq-to-sql

3 ответа

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

Ещё вопросы

Сообщество Overcoder
Наверх
Меню