SQLite сохраняет базу данных заблокированной даже после закрытия соединения

Я использую провайдера System.Data.SQLite в приложении ASP.NET (фреймворк 4.0). Проблема, с которой я сталкиваюсь, заключается в том, что, когда я ВСТАВЛЯЮ что-то в таблицу в базе данных SQLite, база данных блокируется, и блокировка не снимается даже после удаления соединения.

При попытке доступа к файлу возникает ошибка: «Процесс не может получить доступ к файлу» catalog.sqlite ». потому что он используется другим процессом. & quot;

Мой код довольно прост, я открываю соединение, читаю некоторые данные из базы данных SQLServer, вставляю эти данные в SQLite (через SQLiteDataAdapter), а затем закрываю соединение и распоряжаюсь всем, чтобы быть на безопасной стороне. Но все же я получаю эту ошибку, когда пытаюсь заархивировать файл после того, как он заполнен данными.

Я прочитал все предложения здесь, в StackOverflow, но ни одно из них не помогло решить проблему (отключение антивируса, изменение модели транзакции, ожидание за несколько секунд до архивации файла, завершение всех вызовов вставки в транзакцию, и т.д .. но никто не помог решить эту проблему.

Может быть, есть что-то специфическое для ASP.NET (проблема заключается в многопоточности? Хотя я тестирую это на компьютере разработчика, где только один вызов этой функции и никакого параллелизма?)

Как примечание, я попытался избежать DataTable и SQLiteDataAdapter и использовать только SQLiteCommand напрямую, и таким образом он работает очаровательно. Конечно, я могу продолжать строить свои запросы в виде строк вместо использования адаптеров данных, но я нахожу это немного неловким, когда для этого создана платформа.

Ответы на вопрос(11)

Ваш ответ на вопрос