Создание записей с помощью Linq to SQLite через DbLinq

StackOverflow https://stackoverflow.com/questions/1477729

  •  16-09-2019
  •  | 
  •  

Вопрос

Мне (после некоторых значительных усилий) удалось заставить 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");

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

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top