O SQLite mantém o banco de dados bloqueado mesmo depois que a conexão é fechada

Estou usando o provedor System.Data.SQLite em um aplicativo ASP.NET (framework 4.0). O problema que estou correndo é que quando eu INSERT algo em uma tabela no banco de dados SQLite, o banco de dados fica bloqueado eo bloqueio não está sendo liberado, mesmo após a conexão é descartada.

Ao tentar acessar o arquivo, o erro é: "O processo não pode acessar o arquivo 'catalog.sqlite' porque está sendo usado por outro processo."

Meu código é bastante simples, abro a conexão, leio alguns dados de um banco de dados SQLServer, insiro esses dados no SQLite (por meio de SQLiteDataAdapter) e depois fecho a conexão e descarte tudo apenas para estar no lado seguro. Mas ainda assim, recebo esse erro quando tento zipar o arquivo depois que ele é preenchido com os dados.

Eu li todos os tipos de sugestões aqui no StackOverflow, mas nenhum deles ajudou a resolver o problema (desligar o antivírus, alterar o modelo de transação, esperar alguns segundos antes de compactar o arquivo, agrupar todas as chamadas de inserção em uma transação, etc .. mas nenhum ajudou a resolver este problema.

Talvez haja algo específico para o ASP.NET (multithreading é o problema? Mesmo que eu esteja testando em uma máquina de desenvolvimento onde há apenas uma chamada para essa função e sem concorrência?)

Como uma nota lateral, eu tentei evitar DataTable e SQLiteDataAdapter e usando apenas SQLiteCommand diretamente e dessa forma ele funciona bem. É claro que posso continuar construindo minhas consultas como strings em vez de usar os adaptadores de dados, mas acho um pouco estranho quando há um framework construído para isso.

questionAnswers(11)

yourAnswerToTheQuestion