Создание записей с 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");

Это так просто.

Другие вопросы по тегам