Probleme mit FluentNHibernate + SQLite mit .NET4?

Ich habe eine WPF Anwendung mit VS2010 .Net3.5 Verwendung von Nhibernate mit FluentNHibernate + SQLite, und alle funktioniert.

Will ich jetzt ändern, um zu verwenden .Net4, aber dies hat sich in eine eher schmerzhafte Erfahrung dann habe ich gerechnet.. Beim einrichten der Verbindung habe ich, dies zu tun:

var cfg = Fluently.Configure().
    Database(SQLiteConfiguration.Standard.ShowSql().UsingFile("MyDb.db")).
    Mappings(m => m.FluentMappings.AddFromAssemblyOf<MappingsPersistenceModel>());
_sessionFactory = cfg.BuildSessionFactory();                    

Den BuildSessionFactory () - Aufruf wirft eine FluentConfigurationException sagen:

Einem ungültigen oder unvollständigen Konfiguration, die verwendet wurde, während der Erstellung einer SessionFactory. Überprüfen Sie PotentialReasons Sammlung und InnerException für mehr details.

Die innere Ausnahme gibt uns mehr Informationen:

Konnte nicht erstellt auch der Treiber von NHibernate.- Treiber.SQLite20Driver, NHibernate, Version=2.1.2.4000, Culture=neutral, PublicKeyToken=aa95f207798dfdb4.

Und weitere InnerException:

Das IDbCommand-und IDbConnection Umsetzung in der assembly System.Daten.SQLite konnte nicht gefunden werden. Gewährleisten, dass die Montage-System.Daten.SQLite befindet sich in der Anwendungs-Verzeichnis oder im Global Assembly Cache. Wenn die assembly im GAC befindet, verwenden element in der Konfigurationsdatei der Anwendung angeben, den vollständigen Namen der assembly.

Nun - für mich klingt es nicht finden System.Data.SQLite.dll, aber ich kann das nicht verstehen. Überall diese verwiesen wird, habe ich "Copy Local", und ich habe überprüft, dass es in jedem build-Ordner für Projekte mit SQLite. Habe ich auch kopiert, es manuell zu jedem Debug-Ordner von der Lösung - ohne Glück.

Hinweise:

  • Das ist genau der gleiche code, der gut funktioniert, bevor ich aktualisiert .Net4.
  • Ich habe einige x64-x86 mismatch-Probleme früher, aber ich wechselte zu verwenden x86 als Zielplattform und für alle referenzierten dlls. Ich habe überprüft, dass alle Dateien im Debug-Ordner x86.
  • Ich habe versucht, die vorkompilierte Fließend dlls, die ich versucht habe zu kompilieren mich, und ich zusammengestellt haben, meine eigene version der Fließend mit .Net4.
  • Ich sehe, dass es auch andere haben dieses problem gesehen, aber ich habe nicht wirklich gesehen keine Lösung.

Nachdem @devio die Antwort, die ich habe versucht, das hinzufügen einer Referenz auf die SQLite-dll. Das ist nicht nichts ändern, aber ich hoffe ich habe es richtig gemacht, wenn.. Dies ist, was ich Hinzugefügt, um die root-node der app.config-Datei:

<runtime>
    <assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
        <qualifyAssembly partialName="System.Data.SQLite" fullName="System.Data.SQLite, Version=1.0.60.0, Culture=neutral, PublicKeyToken=db937bc2d44ff139" />
    </assemblyBinding>
</runtime>

Jemand da draußen mit Fließend mit .Net4 und SQLite erfolgreich? Hilfe!!! Ich bin verloren...

  • Jede Möglichkeit, dass es ein problem mit 2.x SQLite vs 3.x?
  • Weiß nicht.. Sie denken? Warum würde es die Arbeit mit .Net3.5 dann? Werde versuchen, die neueste SQLite version bald..
  • Haben Sie auch vor kurzem ein Upgrade auf höhere version von NHibernate? Ich habe ähnliche Probleme mit 2.1.2.4000 (aber MySQL in diesem Fall).
  • Nein - wurde mit der gleichen version von NHibernate alle Weg. Alle arbeiten gut mit .NET3.5. Wechsel ich dann zu benutzen .NET4, und das problem zeigt.
InformationsquelleAutor stiank81 | 2010-04-23
Schreibe einen Kommentar