【发布时间】:2013-09-07 20:05:54
【问题描述】:
有人在他们的项目中成功使用过 System.Data.SQLite.Linq 吗?
即使在我的项目参考中包含此 DLL 之后,很明显 Linq 在构建适当的 SQL 语句时调用了错误的提供程序。它使用以下语句在 SQLiteCommand 中引发异常:
INSERT INTO [Inbox]
([Sender], [Subject], [Body], [Date], [ConversationID], [RemoteID], [ReplyTo])
VALUES
(@p0, @p1, @p2, @p3, @p4, @p5, @p6)
SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value]
SCOPE_IDENTITY 在 SQLite 中无效。在构造 SQL 语句时,如何指示 System.Data.SQLite.DLL 使用 SQLite Linq SQL builder?
我的 DbProviderFactories 是:
<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, Version=1.0.88.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139"/>
</DbProviderFactories>
这对吗?
附加信息。当我的应用程序在 bin 文件夹中加载时,我在 VS2012 的模块列表中看不到 System.Data.SQLite.Linq.dll。这证实了我的怀疑,即我遗漏了一些明确引用它的东西,但我不知道它是什么。
谢谢!
【问题讨论】:
-
你使用了什么 DBconnection 类?
-
我正在使用 SQLiteConnection: string connectionString = @"Data Source=" + databasePath + ";provider=System.Data.SQLite"; SQLiteConnection db = new SQLiteConnection(Config.ConnectionString); using (DataContext dc = new DataContext(db)) { // 代码放在这里; }