Я использую поставщика System.Data.SQLite в приложении ASP.NET(фреймворк 4.0). Проблема, с которой я сталкиваюсь, заключается в том, что когда я вставляю что-то в таблицу базы данных SQLite, база данных блокируется, и блокировка не освобождается даже после того, как соединение установлено.
При попытке доступа к файлу ошибка: "Процесс не может получить доступ к файлу" catalog.sqlite ", потому что он используется другим процессом".
Мой код довольно прост, я открываю соединение, читаю некоторые данные из базы данных SQLServer, вставляю эти данные в SQLite (через SQLiteDataAdapter), а затем закрываю соединение и удаляю все, чтобы быть в безопасности. Но все же я получаю эту ошибку, когда пытаюсь закрепить файл после заполнения данными.
Я прочитал все предложения здесь, в StackOverflow, но ни один из них не помог решить проблему (отключив антивирус, изменив модель транзакции, ожидая несколько секунд, прежде чем закрепить файл, обернув все вставки в транзакция и т.д., но никто не помог решить эту проблему.
Может быть, что-то особенное для ASP.NET(многопоточность является проблемой? Хотя я тестирую ее на машине разработки, где есть только один вызов этой функции и concurrency?)
В качестве побочного примечания я попытался избежать DataTable и SQLiteDataAdapter и использовать только SQLiteCommand напрямую, и таким образом это работает. Конечно, я могу продолжать строить свои запросы в виде строк вместо использования адаптеров данных, но мне кажется, что это немного неудобно, когда есть инфраструктура, созданная для этого.