【问题标题】:Use ExecuteQuery<T>() on an SQLiteCommand在 SQLiteCommand 上使用 ExecuteQuery<T>()
【发布时间】:2015-04-13 23:55:22
【问题描述】:

问题

在 LINQPad 4 中,当我尝试运行以下代码时:

void Main()
{
    using (var conn = new SQLiteConnection(@"C:\linqToSqlite"))
    {
        var query = new SQLiteCommand(conn);
        query.CommandText = "SELECT * FROM MyTable";
        var result = query.ExecuteQuery<MyTable>();
    }
}

我收到以下错误:

“System.Data.SQLite.SQLiteCommand”不包含“ExecuteQuery”的定义,并且找不到接受“System.Data.SQLite.SQLiteCommand”类型的第一个参数的扩展方法“ExecuteQuery”(按 F4 到添加 using 指令或程序集引用)

我尝试过的

其他参考:

System.Data.Linq.dll
System.Data.SQLite.dll
System.Data.SQLite.Linq.dll

其他命名空间导入:

System.Data.Linq
System.Data.SQLite
System.Data.SQLite.Linq // Cannot add this, cleanup removes it.

I've also found documentation,其中谈到了使用SQLiteCommand.ExecuteQuery 方法。这是我唯一看到提到的命令的地方。

【问题讨论】:

  • 如果我记得清楚的话,我认为SQLLiteCommand不支持这种方法。也许你应该考虑使用 Linq 的 SqlLiteDataContent 的 ExecuteQuery()
  • @ProgrammingFan 我们在哪个程序集中找到SqlLiteDataContext 及其ExecuteQuery&lt;T&gt;() 方法?

标签: linq sqlite linqpad


【解决方案1】:

不要认为这个功能是内置的。每当我需要对 sqlite 数据库执行直接 sql 查询时,我都会添加对 Dapper 的 Nuget 引用并添加命名空间 Dapper。这让我可以做类似的事情。

   string query = "Select * from MyTable" ;
   var results = this.Connection.Query<MyTable>(query).ToList();

   using (var conn = new SQLiteConnection(@"C:\linqToSqlite"))
   {
      string query = "Select * from MyTable" ;
      var results = conn.Query<MyTable>(query).ToList();
   }

【讨论】:

    【解决方案2】:

    从您给定的文档中,我发现您可以参考 RebornBuddy.exe 版本:1.0.233.0 (1.0.233)。

    这是一张图片:

    SQLLite.dll 的 ExecuteQuery() 不使用“通用类型”。所以它只在一个常见的 ado.net 中使用。如果您坚持在 LINQ 中使用它(并且如果已实现)。也许您可以使用“SqlLiteDataContext 的 ExecuteQuery”之类的东西。

    有关 SqlLiteDataContext 的 ExecuteQuery 的更多信息,请参阅详细信息: https://msdn.microsoft.com/en-us/library/bb361109(v=vs.110).aspx

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-10-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多