我一直在为我的应用程序使用System.Data.SQLite提供程序。但是,当我尝试创建一个新对象并将其插入数据库时,我得到一个SQL syntax error near "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
答案 0 :(得分:3)
这里有一篇关于如何显示正在生成的SQL的文章,它可以更好地了解SQLite不喜欢的内容:http://msdn.microsoft.com/en-us/library/bb386961.aspx
编辑日志:从SqlProvider(Sql2008)部分看,它似乎正在尝试使用SqlServer 2008语法而不是SQLite语法,这可以解释为什么它认为语法无效。
再次编辑以获取更多信息:有关SQLite和Linq的信息,请参阅此问题:LINQ with SQLite (linqtosql)