5

No consigo que SQLite Driver funcione en mi sessionfactory.FluentNhibernate y SQLite

He descargado SQLite 1.0.48 de http://sqlite.phxsoftware.com/

He añadido las referencias a System.Data.SQLite en mi proyecto de pruebas.

public static IPersistenceConfigurer GetSqlLiteConfigurer() 
     { 
      try 
      { 
       return SQLiteConfiguration 
       .Standard 
       .InMemory(); 
      } 
      catch (Exception ex) 
      { 
       throw ex; 
      } 
     } 

Éste es cómo generar el configurador

El problema es cuando construyo mi SessionFactory me sale el siguiente error:

NHibernate.HibernateException: The IDbCommand and IDbConnection implementation in the assembly System.Data.SQLite could not be found. Ensure that the assembly System.Data.SQLite is located in the application directory or in the Global Assembly Cache. If the assembly is in the GAC, use <qualifyAssembly/> element in the application configuration file to specify the full name of the assembly. 
at NHibernate.Driver.ReflectionBasedDriver..ctor(String driverAssemblyName, String connectionTypeName, String commandTypeName) 
at NHibernate.Driver.SQLite20Driver..ctor() 

he tratado de cambiar de versión de SQLite, pero no lo hizo arregla el problema

No puedo encontrar el problema y he estado trabajando en esto durante 2 días.

Avíseme si necesita más información.

¡Gracias por la ayuda!

Charles

Respuesta

7

he fijado mi problema al obtener el archivo System.Data.SQLite.dll que está en el FluentNHibernate repositorio SVN.

Esto ahora está funcionando muy bien.

yo, hubiera comprobar esto antes;)

+0

Gracias. Esto resolvió el problema para mí. – statenjason

+0

Ahora disponible como paquete NuGet http: // nuget.org/List/Packages/SQLitex64 –

10

Cuando me encontré con este problema se produce por correr conjunto de propiedades que tiene el procesador de mi solicitud a Cualquier CPU y se ejecuta en un sistema de 64 bits. Para corregir el problema, establecí la propiedad del procesador de aplicaciones en x86. No creo que System.Data.SQLite.dll admita funcionar bajo un proceso x64.

+2

System.Data.SQLite.dll * está * disponible para x64, es simplemente otro ensamblado (que está incluido en el directorio x64) –

+0

+1 esto resolvió el problema para mí (incluso con el x64 dll) de SQLite no parecía funcionar) – Ben

+0

funcionó para mí también – Kevin

0

Estoy llegando al mismo problema en una máquina de compilación. Funciona bien cuando abro el proyecto con Visual Studio, pero cuando ejecuto mstest.exe falla con el error anterior. También falla en mi máquina de desarrollo local cuando corro por línea de comando. Process Monitor no muestra intentos de localizar el archivo por mstest.exe.

La máquina de compilación es de 32 bits, mi máquina local es de 64 bits. El ensamblaje que estamos utilizando es el del tronco Fluiber NHibernate.

ACTUALIZACIÓN: se dedujo que mstest.exe no estaba copiando todos los ensamblados cuando se ejecutaba desde la línea de comandos. Actualicé el localtestrun.config para incluirlos en Despliegue. No estoy seguro de por qué el comportamiento es diferente del IDE y el corredor de prueba de línea de comando.

+0

Hola, estoy teniendo el problema exacto ! Mi máquina de construcción también es de 64 bits, esa es la única diferencia. Mis pruebas fallan cuando se ejecutan localmente también, a través de la línea de comando, pero pasan desde VS. ¿Cómo resolviste esto por favor? ¿A qué te refieres con "actualicé el localtestrun.config para incluirlos en Despliegue" y cómo lo hago, por favor? – iamserious

+0

@iamserious si no recuerdo haber copiado todos los ensamblajes necesarios. Al utilizar la configuración de implementación en la configuración de ejecución de prueba, puede asegurarse de que todos los bits necesarios estén disponibles para su ejecución. –

+0

Colin, de acuerdo, gracias! – iamserious

1

Compruebe si está utilizando 4.0 como su marco de destino. El controlador ADO actual (1.0.66) solo admite 3.5.

Cuestiones relacionadas