2009-09-25 3 views
2

я (после некоторого значительного усилия) получили DbLinq работать с последней сборкой Mono на OS X.Создание записей с Linq для SQLite через DbLinq

Кто-successfulyl созданные объекты базы данных с помощью 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 не поддерживается?

+0

Я пытаюсь сгенерировать код .cs с dbmetal. Я получаю исключение. Не могли бы вы разместить образец того, как вы сгенерировали файл .cs (code) из базы данных sqlite? –

+0

@ Jitesh Не могли бы вы рассказать мне, как вы получили файл cs и dbml с помощью DbMetal? если возможно, ответьте на мой вопрос здесь http://stackoverflow.com/questions/2396143/creating-linq-to-sqlite-dbml-from-dblinq-source-code – Amsakanna

ответ

3

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

Старый:

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

Новое:

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

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

+0

Где находится класс SqliteConnection? –

+0

Хорошо, чтобы ответить на мой собственный вопрос, вам нужно обратиться к библиотеке System.Data.SQLite.DLL –