我一直在为我的应用程序使用System.Data.SQLite提供程序。但是,当我尝试创建一个新对象并将其插入数据库时,我得到了一条SQL syntax error near "SELECT"。
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
这里有一篇有关如何显示正在生成的SQL的文章,这可能会更好地了解SQLite不喜欢的内容:http : //msdn.microsoft.com/zh- cn/library/bb386961.aspx
日志编辑:从SqlProvider(Sql2008)部分看,它似乎正在尝试使用SqlServer 2008语法而不是SQLite语法,这将解释为什么它认为该语法无效。