Der Versuch, SQLite für Komponententests zu verwenden, funktioniert einwandfrei. Einige der Repositories zu testen, ist jedoch wahrscheinlich, weil sie Transaktionen verwenden.NHibernate Interceptor zum Ändern der Transaktionslevel
Für die Transaktionen, die ReadCommitted alles ist in Ordnung, aber einige von ihnen ReadUncommitted verwenden zu benutzen, die einen Blick auf System.Data.SQLite mit nicht unterstützt:
if ((this._defaultIsolation != IsolationLevel.Serializable) && (this._defaultIsolation != IsolationLevel.ReadCommitted))
{
throw new NotSupportedException("Invalid Default IsolationLevel specified");
}
Ich frage mich, ist es möglich, Abfangen der Session.BeginTransaction (...), so dass ich die Transaktionsebene nur für Komponententests ändern kann.
Aktualisierung: Meine Lösung war, den Quellcode für System.Data.SQLite herunterzuladen und die Ausnahmen zu ändern, um die Standardisolationsstufe festzulegen. Ich Bloggled darüber hier:
http://www.philliphaydon.com/2011/01/system-data-sqlite-isolationlevel-exception/
Yeah das ist, was ich vermeiden wollte, da dies nur den Komponententest und nicht die Anwendung betrifft. Was ich letzte Nacht getan habe, war das Herunterladen des Quellcodes für System.Data.SQLite und das Ändern der beiden Prüfungen, die es für isolationlevel durchführt, und das Ändern in serializable, anstatt eine Ausnahme auszulösen. – Phill
Meine Lösung: http://www.philliphaydon.com/2011/01/system-data-sqlite-isolationlevel-exception/ – Phill
Nicht schlecht. OSS-Regeln :-) –