LINQ-to-SQL с SQLite: синтаксическая ошибка рядом с «SELECT» при вставке - PullRequest
2 голосов
/ 04 июня 2010

Я использовал провайдера 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.

ОБНОВЛЕНИЕ : вывод журнала последнего запроса, сгенерированного до появления ошибки:

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 Ответ

3 голосов
/ 04 июня 2010

Здесь есть статья о том, как показать генерируемый SQL, который может дать лучшее представление о том, что SQLite не нравится: http://msdn.microsoft.com/en-us/library/bb386961.aspx

РЕДАКТИРОВАТЬ для журнала: из части SqlProvider (Sql2008) похоже, что он пытается использовать синтаксис SqlServer 2008 вместо синтаксиса SQLite, что объясняет, почему он считает синтаксис недействительным.

EDIT снова для получения дополнительной информации: см. Этот вопрос для получения информации о SQLite и Linq: LINQ с SQLite (linqtosql)

...