【问题标题】:Linq + SQLite + Take() == ProblemLinq + SQLite + Take() == 问题
【发布时间】:2011-06-30 12:41:52
【问题描述】:

我正在使用 System.Data.SQLite 通过 c#/linq 访问 SQLite 数据库。在我尝试使用导致异常的 Take()/Skip() 功能之前,我没有遇到任何问题。 Take() 的错误消息是“SQLite error near ".": syntax error”。 有什么想法可以解决这个问题吗?

【问题讨论】:

  • 您使用的是最新版本的 System.Data.SQLite 吗?
  • 目前:没有。直到昨天我才注意到,必须等待我的管理员安装最新版本。我会告诉你进展如何。
  • 使用 1.0.73.0 版我仍然有问题。
  • 我相信最新版本是1.0.66.0。您可以尝试检查生成的 SQL(将查询转换为 ObjectQuery 并调用 ToTraceString),或者只是在 SQLite forum 中询问 - 维护人员不会定期监控 SO。
  • 我更新到这个fork,好像有更新的版本。

标签: c# linq sqlite skip take


【解决方案1】:

也许你需要 DBLinq http://code.google.com/p/dblinq2007/

【讨论】:

  • DBLinq 在这一切中的地位如何?好像是用 System.Data.SQLite,但也许它自己做 LINQ to SQL 的转换?
【解决方案2】:

我在使用 VS2008 SP1、System.Data.Sqlite.Linq v2.0.38.0System.Data.Sqlite v1.0.66.0 时遇到了同样的问题。
解决了一个类似的错误(使用 LINQ 的 Skip)取消注释 app.config 中的 DbProviderFactories 部分,不要问我为什么会这样。
该部分以这种方式显示:

  <system.data>
    <DbProviderFactories>
      <remove invariant="System.Data.SQLite"/>
      <add name="SQLite Data Provider" invariant="System.Data.SQLite" description=".Net Framework Data Provider for SQLite" type="System.Data.SQLite.SQLiteFactory, System.Data.SQLite" />
    </DbProviderFactories>
  </system.data>

(在重新安装操作系统后,我正在使用旧的 VS2008 项目,我必须重新安装所有依赖项,我想我没有安装与我所拥有的完全相同的 Sqlite 版本。它总是与 app.config 的部分评论)

【讨论】:

  • 也为我工作,.net framework 4.8,C# 8 已激活。已安装最新的 System.Data.SQLite.Linq NuGet 包。无论如何,删除 NeGet 包后,它在没有 app.config 的情况下工作。我认为这个包在当前框架中不是必需的,并且 nuget 包让系统感到困惑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-01-18
  • 1970-01-01
  • 2012-06-12
  • 1970-01-01
  • 2011-04-25
  • 1970-01-01
相关资源
最近更新 更多