34 Stimmen

Problem bei der Verwendung von SQLite :memory: mit NHibernate

Ich verwende NHibernate für meine Dataacess, und für eine Weile nicht ich habe mit SQLite für lokale Integrationstests. Ich habe eine Datei verwendet, aber ich dachte, ich würde aus der :memory: Option. Wenn ich einen der Integrationstests starte, scheint die Datenbank erstellt zu werden (NHibernate spuckt die Tabellenerstellungs-SQL aus), aber die Interaktion mit der Datenbank verursacht einen Fehler.

Hat jemand jeder NHibernate mit einer In-Memory-Datenbank arbeiten bekommen? Ist das überhaupt möglich? Die Verbindungszeichenfolge, die ich verwende, ist die folgende:

Data Source=:memory:;Version=3;New=True

0voto

chills42 Punkte 13564

Es ist nur eine wilde Vermutung, aber verwendet die SQL-Ausgabe von NHibernate einen Befehl, der von Sqlite nicht unterstützt wird?

Was passiert außerdem, wenn Sie eine Datei anstelle des Speichers verwenden? (System.IO.Path.GetTempFileName() würde meiner Meinung nach funktionieren...)

0voto

Tim Scott Punkte 14679

Ich mache es mit Nashorn Commons . Wenn Sie Rhino Commons nicht verwenden möchten, können Sie den Quelltext studieren, um zu sehen, wie es funktioniert. Das einzige Problem, das ich hatte, ist, dass SQLite keine verschachtelten Transaktionen unterstützt. Dies zwang mich, meinen Code zu ändern, um Integrationstests zu unterstützen. Integrationstests mit einer In-Memory-Datenbank sind so großartig, dass ich beschlossen habe, dass dies ein fairer Kompromiss ist.

0voto

Drexter Punkte 55

Ich möchte mich nur bei Decates bedanken. Ich versuche schon seit ein paar Monaten, dieses Problem zu lösen, und alles, was ich tun musste, war, Folgendes hinzuzufügen

FullUri=file:memorydb.db?mode=memory&cache=shared

an die Verbindungszeichenfolge in meiner nhibernate-Konfigurationsdatei an. Ich verwende auch nur NHibernate mit *.hbm.xml und nicht FNH und musste meinen Code überhaupt nicht ändern!

0voto

jenspo Punkte 504

Ich bekam den gleichen Fehler, als ich vergaß, das SQLite Nuget-Paket zu importieren.

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X