Estoy usando el proveedor de System.Data.SQLite en una aplicación ASP.NET (framework 4.0). El problema al que me estoy enfrentando es que cuando INSERTO algo en una tabla en la base de datos SQLite, la base de datos se bloquea y el bloqueo no se libera incluso después de que se elimina la conexión.SQLite mantiene la base de datos bloqueada incluso después de que se cierra la conexión
Al intentar acceder al archivo, el error es: "El proceso no puede acceder al 'catalog.sqlite' archivo porque está siendo utilizado por otro proceso."
Mi código es bastante sencillo, abro la conexión, leo datos de una base de datos SQLServer, inserto esos datos en SQLite (a través de SQLiteDataAdapter) y luego cierro la conexión y dispongo todo para estar seguro. Pero aún así, obtengo ese error cuando intento comprimir el archivo una vez que se ha completado con los datos.
He leído todo tipo de sugerencias aquí en StackOverflow pero ninguna de ellas me ha ayudado a resolver el problema (apagar el antivirus, cambiar el modelo de transacción, esperar unos segundos antes de subir el archivo, ajustar todas las llamadas de inserción en una transacción, etc., pero ninguno ha ayudado a resolver este problema.
Quizás haya algo específico en ASP.NET (¿qué es el multihilo? Aunque lo estoy probando en una máquina de desarrollo donde solo hay una llamada esa función y no la concurrencia?)
Como nota al margen, traté de evitar DataTable y SQLiteDataAdapter y el uso de SQLiteCommand directamente y de esa manera funciona un ch brazo. Por supuesto, puedo seguir creando mis consultas como cadenas en lugar de utilizar los adaptadores de datos, pero me resulta un poco incómodo cuando se construye un marco para hacerlo.
¿Está ajustando los comandos y las conexiones en las instrucciones de uso? – Arran
¿Esta aplicación está bloqueada, es decir, la cerradura se desvanece cuando sale? –
@Arran No estoy envolviendo la conexión con el uso. Pero no lo estoy incluyendo incluso con la versión que funciona sin bloqueo (también conocida como la que usa comandos en lugar de adaptadores de datos). –