У меня возникают проблемы при попытке использовать функцию автоматической синхронизации DBML с SQLite. В моей модели данных есть класс, который содержит первичный ключ (id
). Этот ключ определен как «INTEGER PRIMARY KEY», который SQLite отображает на rowid
строки. Чтобы поддержать это, я установил «Auto Generated Value» на «True» и «Auto-Sync» на «OnInsert».
Проблема в том, что когда я фиксирую новую запись в базе данных, строка SELECT
, используемая классами LINQ to SQL, не поддерживается SQLite:
SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value]
Вместо этого SQLite имеет функцию last_insert_rowid()
, на которую я не могу указать.
Кто-нибудь знает, как это исправить? Возможно, изменив оператор, использованный для выбора идентификатора последней строки, или какой-то другой трюк, который мне не хватает?
РЕДАКТИРОВАТЬ Похоже, что некоторый трафик на сайте провайдера, но без разрешения.
РЕДАКТИРОВАТЬ Поскольку я, кажется, запутал вопрос, вот как я настроил свое приложение. Надеюсь, это поможет пролить некоторый свет на мой мыслительный процесс и, возможно, на основную проблему.
- Добавить новый файл "LINQ to SQL Classes" в мое решение
- Модель моей базы данных в конструкторе с именем
DataModel
- Открыть базу данных, используя
System.Data.SQLite.SQLiteConnection
- Инициализировать экземпляр
DataModel
, используя это соединение