Создавайте записи с 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 не поддерживается?


person Justin Niessner    schedule 25.09.2009    source источник
comment
Я пытаюсь сгенерировать код .cs с помощью dbmetal. У меня исключение. Не могли бы вы опубликовать образец того, как вы сгенерировали файл .cs (код) из базы данных sqlite?   -  person Jitesh Patil    schedule 11.01.2010
comment
@Jitesh Не могли бы вы рассказать мне, как вы получили файлы cs и dbml с помощью DbMetal? если возможно, ответьте на мой вопрос здесь stackoverflow.com/questions/2396143/   -  person Amsakanna    schedule 12.04.2010


Ответы (1)


Оказывается, при использовании DbLinq вам нужно изменить строку подключения к БД, чтобы Mono's System.Data.Linq знал, какой провайдер БД использовать при генерации своего кода SQL.

Старый:

SqliteConnection("Data Source=MyDatabase.sqlite");

Новый:

SqliteConnection("DbLinqProvider=Sqlite;Data Source=MyDatabase.sqlite");

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

person Justin Niessner    schedule 02.10.2009
comment
Где находится класс SqliteConnection? - person Jaco Pretorius; 05.01.2011
comment
Хорошо, чтобы ответить на мой собственный вопрос, вам нужно сослаться на библиотеку System.Data.SQLite.DLL. - person Jaco Pretorius; 05.01.2011