Создание записей с Linq для SQLite через DbLinq
Я (после некоторых значительных усилий) заставил DbLinq работать с последней сборкой Mono на OS X.
Кто-нибудь успешно создавал базы данных через DbLinq/Sqlite?
Например, у меня есть следующая таблица:
CREATE TABLE UserType (
id integer primary key,
description text )
Я сгенерировал свой файл *.cs и использую следующий код, чтобы попытаться создать новую запись UserType:
UserType newUserType = new UserType();
newUserType.id = null // Attempting to get SQLite to increment
newUserType.description = "Administrator";
db.UserType.InsertOnSubmit(newUserType);
db.SubmitChanges();
Вызов SubmitChanges вызывает исключение о недопустимом синтаксисе, конкретно связанном с @ (я предполагаю, что в параметризованном запросе выполняется вставка). Похоже, что генерируемый код специфичен для SQL Server. Есть ли исправление или флаг, который я пропустил, или вставка записей через DbLinq в SQLite не поддерживается?
1 ответ
Оказывается, что при использовании DbLinq вам нужно изменить строку подключения к БД, чтобы System.Data.Linq Mono знал, какой поставщик БД использовать при генерации кода SQL.
Старый:
SqliteConnection("Data Source=MyDatabase.sqlite");
Новое:
SqliteConnection("DbLinqProvider=Sqlite;Data Source=MyDatabase.sqlite");
Это так просто.