Wie wird SQLite für die Ausführung mit NHibernate konfiguriert, wenn die Assembly System.Data.SQLite löst?

8

Ich verwende den neuesten NHibernate 2.1.0Beta2. Ich versuche Einheitentest mit SQLite und lasse die Konfiguration wie folgt einrichten:

%Vor%

Wenn ich versuche, es auszuführen, erhalte ich den folgenden Fehler:

%Vor%

Es sieht also so aus, als müsste ich direkt auf die Assembly verweisen. Wie würde ich das machen, damit ich diesen Fehler nicht mehr bekomme?

Ich habe die neueste Versammlung von hier heruntergeladen: Ссылка .

    
Michael Hedgpeth 24.06.2009, 22:07
quelle

4 Antworten

12

Führen Sie 64-Bit-Windows aus?

Als ich mich in Google umgesehen habe, habe ich in mehreren Beiträgen gesehen, dass die SQLite-DLL-Datei für x86 und nicht für x64 erstellt wurde.

Siehe diesen Beitrag: Ссылка

Bearbeiten: Ich bin mir nicht sicher, wann, aber ich habe heute festgestellt, dass die neuesten Versionen von System.Data.SQLite die x64-DLL enthalten. Die x64-DLL ist in \bin\x64 .

Ссылка

    
Jared Harley 25.06.2009, 02:38
quelle
6

Nachdem ich den Verweis auf die System.Data.SQLite-Assembly hinzugefügt hatte, musste ich copy local auf true setzen (wähle den Assembly-Verweis in VS und gehe zu den Eigenschaften), damit die Assembly in das bin-Verzeichnis kopiert wird.

>     
Ben Foster 04.05.2010 12:04
quelle
3

Wenn Sie keine 64-Bit-Version von System.Data.Sqlite verwenden möchten Sie können "platform target" (in Visual Studio-Projekt- & gt; Eigenschaften- & gt; Build) zu x86 ändern.

    
mr0zek 21.06.2010 05:57
quelle
3

Ich hatte das gleiche Problem, und die obigen Lösungen haben für mich nicht geklappt. Ich denke, System.Data.SQLite hat sich seitdem geändert.

Beachten Sie, dass dieses Problem spezifisch für einen Fall ist, der alle der folgenden Kriterien berücksichtigt:

  • mit SQLite
  • mit System.Data.SqlLite
  • auf einer x64-Maschine
  • und NHibernate (in meinem Fall 2.1.2.4)

Dieser Konfigurationsabschnitt in meiner web.config (oder app.config für meine Komponententests) hat es zum Laufen gebracht. Ich musste die Versammlung qualifizieren, um sicher zu gehen, dass er richtig lädt.

%Vor%

Irgendwo in seiner inneren Umgebung erstellt NHibernate beim Assemblieren mit gescannten Assemblys ein Assembly-Objekt, das seinen Teilnamen als Zeichenfolge "System.Data.SQLite" verwendet. Irgendwie wurde die x86-Version der Assembly geladen.

Die obige Konfiguration stellte sicher, dass die Verwendung des partiellen Namens zum Laden einer Assembly die x64-Version bereitstellt.

    
Julien Bérubé 17.12.2010 22:35
quelle

Tags und Links