SQLite utrzymuje bazę danych zablokowaną nawet po zamknięciu połączenia

Używam dostawcy System.Data.SQLite w aplikacji ASP.NET (framework 4.0). Problem, w którym się znajduję, polega na tym, że kiedy WSTAWIĘ coś w tabeli w bazie danych SQLite, baza danych zostaje zablokowana, a blokada nie jest zwalniana nawet po usunięciu połączenia.

Podczas próby uzyskania dostępu do pliku błąd jest następujący: „Proces nie może uzyskać dostępu do pliku 'catalog.sqlite', ponieważ jest używany przez inny proces.”

Mój kod jest całkiem prosty, otwieram połączenie, czytam niektóre dane z bazy danych SQLServer, wstawiam te dane do SQLite (przez SQLiteDataAdapter), a następnie zamykam połączenie i pozbywam się wszystkiego po to, aby być po bezpiecznej stronie. Ale mimo to otrzymuję ten błąd, gdy próbuję skompresować plik po wypełnieniu go danymi.

Przeczytałem wszystkie rodzaje sugestii tutaj na StackOverflow, ale żaden z nich nie pomógł rozwiązać problemu (wyłączając program antywirusowy, zmieniając model transakcji, czekając kilka sekund przed skompresowaniem pliku, zawijając wszystkie wstawione wywołania w transakcję, etc .. ale żaden nie pomógł rozwiązać tego problemu.

Może jest coś specyficznego dla ASP.NET (wielowątkowość jest problemem? Nawet jeśli testuję go na maszynie programistycznej, gdzie jest tylko jedno wywołanie tej funkcji i brak współbieżności?)

Na marginesie, próbowałem unikać DataTable i SQLiteDataAdapter i używać tylko SQLiteCommand bezpośrednio iw ten sposób działa urok. Oczywiście mogę nadal tworzyć moje zapytania jako ciągi znaków zamiast używać adapterów danych, ale w pewnym sensie uważam, że jest to trochę niezręczne, gdy jest zbudowany taki szkielet.

questionAnswers(11)

yourAnswerToTheQuestion