2010-06-04 94 views
2

我一直在爲我的應用程序使用System.Data.SQLite提供程序。當我嘗試創建一個新對象並將其插入到數據庫中時,我得到一個SQL syntax error near "SELECT"SQLite的LINQ到SQL:插入時出現「SELECT」附近的語法錯誤

基本上我的代碼如下所示:

//supplies is a DataContext connected to my DB 
Table<Store> stores = supplies.Stores; 
//... 
Store newStore = new Store(); 
// A Store has an Id (pk autoincrement), Name, Number, and EntitySet<Usages> 
newStore.Name = "New Store"; 
newStore.Number = 0; 
//... 
stores.InsertOnSubmit(newStore); 
supplies.SubmitChanges(); 

但縱觀一些方法傳播。

這是一個常見/新手問題?如果是這樣,我做錯了什麼? 如果不是,我應該在哪裏/如何調試?我在LINQ-to-SQL方面頗爲新穎。

UPDATE:錯誤之前產生的最後一個查詢的日誌輸出是這樣的:

INSERT INTO [Stores]([Number], [Name]) 
VALUES (@p0, @p1) 

SELECT CONVERT(Int,SCOPE_IDENTITY()) AS [value] 
-- @p0: Input Int32 (Size = 0; Prec = 0; Scale = 0) [0] 
-- @p1: Input String (Size = 0; Prec = 0; Scale = 0) [New Store] 
-- Context: SqlProvider(Sql2008) Model: AttributedMetaModel Build: 3.5.30729.4926 
+1

我敢肯定,SCOPE_IDENTITY()是特定於T-SQL(SQL服務器)。 – GalacticCowboy 2010-06-04 16:38:39

回答

3

這裏有一篇有關如何顯示生成的SQL可能會給你什麼樣的SQLite的一個更好的主意不喜歡:http://msdn.microsoft.com/en-us/library/bb386961.aspx

編輯爲日誌:從SqlProvider(Sql2008)部分,它看起來像它試圖使用SqlServer 2008語法而不是SQLite語法,這將解釋爲什麼它認爲語法無效。再次

編輯進一步信息:有關的SQLite和LINQ信息這個問題:LINQ with SQLite (linqtosql)