Создание записей с помощью Linq to 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 не поддерживается?
Решение
Оказывается, при использовании DbLinq вам необходимо изменить строку подключения к базе данных, чтобы System.Data.Linq Mono знал, какой поставщик БД использовать при генерации своего SQL-кода.
Старый:
SqliteConnection("Data Source=MyDatabase.sqlite");
Новый:
SqliteConnection("DbLinqProvider=Sqlite;Data Source=MyDatabase.sqlite");
Это так просто.