我在使用LINQ訪問SQLite數據庫時遇到以下問題。簡寫爲代碼如下所示:使用LINQ訪問表中的第一個元素時出現SQLite錯誤
...
using System.Linq
using System.Data.Linq
using System.Data.Linq.Mapping
using System.Data.SQLite
...
DataContext sqltContext= new DataContext(sqltConnection);
featureTable = sqltContext.GetTable<FeatureModel>();
count= featureTable.Count(); // count == 1
下面一行失敗,錯誤: 「SQL邏輯錯誤或丟失的數據庫\ r \ n未知錯誤「
//currentFeature = featureTable.First();
但迭代器正常工作:
foreach (var feature in featureTable)
{
currentFeature = feature;
break;
}
在這兩種情況下,我得到的調試輸出以下錯誤:
SQLite error (1): near ".": syntax error
什麼會導致這個錯誤?我希望以前有人看到過這個問題,並可以指出我的方向。但是我可能最終會在調試器中逐步完成System.Data.SQLite代碼。
編輯:基於以下來自GeorgeT的評論,我添加了sqltContext.Log = Console.Out;
。根據日誌記錄輸出,看起來LINQ正在生成一個SELECT TOP
命令,它與SQLite不兼容。這個問題的解決似乎是避免First
或FirstOrDefault
方法,或者使用類似DBLinq
參閱相關的問題http://stackoverflow.com/questions/17280051/sqlite-error-near-s-syntax-error。 – user1929959
這看起來像生成的SQL文本中的錯誤。這個相關的問題的選擇答案鏈接到一篇文章,可能會幫助您看到文本:http://stackoverflow.com/questions/2975554/linq-to-sql-with-sqlite-syntax-error-near-select-when-inserting ?RQ = 1 –