在SQLiteCommand上使用ExecuteQuery <t>()</t>

时间:2015-04-13 23:55:23

标签: linq sqlite linqpad

问题

在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'的定义,并且没有扩展方法'ExecuteQuery'接受类型'System.Data.SQLite.SQLiteCommand'的第一个参数可以找到(按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方法。那是我见过这个命令的唯一地方。

2 个答案:

答案 0 :(得分:2)

不要认为此功能是内置的。每当我需要对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();
   }

答案 1 :(得分:1)

从您给定的文档中我发现您可以考虑使用它来引用 RebornBuddy.exe版本:1.0.233.0(1.0.233)。

这是一张图片:

enter image description here

而SQLLite.dll的ExecuteQuery()只是不使用“泛型类型”。因此它仅用于一个共同的ado.net。如果你坚持在LINQ中使用它(如果实现的话)。也许你可以使用像“SqlLiteDataContext的ExecuteQuery”这样的东西。

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