У меня возникли проблемы с использованием функции «Автоматическая синхронизация» DBML с SQLite. У меня есть класс в моей модели данных, содержащий первичный ключ (id
). Этот ключ определяется как «INTEGER PRIMARY KEY», который SQLite сопоставляет с номером rowid
. Чтобы поддержать это, я установил «Auto Generated Value» на «True» и «Auto-Sync» на «OnInsert».Использование функции «Автоматическая синхронизация» DBML с SQLite
Проблема, когда я совершаю новую запись в базе данных, SELECT
строка используется LINQ для классов SQL не поддерживается SQLite:
SELECT CONVERT(BigInt,SCOPE_IDENTITY()) AS [value]
Вместо SQLite имеет функцию last_insert_rowid()
, которая Кажется, я не могу сказать.
Кто-нибудь знает, как исправить это? Возможно, изменив инструкцию, используемую для выбора последнего идентификатора строки или другого трюка, которого я не вижу?
EDIT Там, как представляется sometraffic на сайте провайдера, но никаких решений.
EDIT Поскольку я, похоже, смутил вопрос, вот как я настроил свое приложение. Надеюсь, это поможет пролить свет на мой мыслительный процесс и, возможно, основной вопрос.
- Добавить новый «LINQ к классам SQL» файл в моем решении
- Модель моя база данных в конструкторе, названный
DataModel
- Открыть базу данных с помощью
System.Data.SQLite.SQLiteConnection
- Инициализировать экземпляр
DataModel
с помощью этого соединения
хммы .. DBML = Linq-to-SQL = SQL только сервер. Не знаете, что вы пытаетесь сделать здесь, но не являются ли файлы DBML частью Linq-to-SQL, которая предназначена только для сервера SQL Server? –
Я должен был упомянуть ... Я использую System.Data.SQLite (http://sqlite.phxsoftware.com/) как бэкэнд, который поддерживает ADO.NET Entity Framework. – jheddings
Не могли бы вы уточнить, используете ли вы LINQ to SQL/DBML (который не поддерживает SQLite) в соответствии с вашим вопросом и тегами или Entity Framework/EDMX (который поддерживает SQLite через указанную вами библиотеку) в соответствии с вашим комментарий? – itowlson