【问题标题】:SELECT @@DBTS using Linq to SQL使用 Linq to SQL 选择 @@DBTS
【发布时间】:2020-02-13 21:26:44
【问题描述】:

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

这是我正在尝试的:

IEnumerable 结果 = db.ExecuteQuery(@"SELECT @@DBTS");

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

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

【问题讨论】:

    标签: c# asp.net linq-to-sql


    【解决方案1】:

    我怀疑您可能必须使用常规 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();
    }
    

    【讨论】:

      【解决方案2】:

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

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

      【讨论】:

        【解决方案3】:

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

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-20
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多