2009-06-24 7 views
1

Wie würde ich eine Sitzung an eine Repository-Klasse weitergeben?NHibernate-Sitzung an das Repository übergeben

Sagen wir, dass ich zwei Projekte habe.

1) Testsuite 2) Business

das Repository im Business Projekt enthalten ist. Die NHibernate-Sitzung wird im TestSuite-Projekt geöffnet. Jetzt möchte ich dieselbe Sitzung verwenden, da das TestSuite-Projekt eine Transaktion in dieser Sitzung startet. Derzeit verwende ich Folgendes:

var repository = neues CustomerRepository (_session);

Natürlich sieht das hässlich aus! Ich denke irgendwie, dass ein Abhängigkeitsinjektionsrahmen süchtig sein kann und mich mit dem ISession-Objekt versorgen kann, ohne dass ich in das Repository gehen muss.

Antwort

1

In unserem WCF-Dienst verwenden wir tatsächlich eine UnitOfWork, die eine einzelne Operation umschließt und die ISession für diese Operation speichert.

Die Repositories wissen, wie sie eine ISession von der aktuellen Arbeitseinheit erhalten, unter der sie laufen.

In Bezug auf das Testen haben wir eine Basis-Test-Klasse, die jede Test-Klasse, die Tests enthält, die die Datenbank erben von erbt. Wir steuern dann das Starten und Beenden einer Arbeitseinheit in der Testumgebung. Hat recht gut für uns geklappt, sobald man sich daran gewöhnt hat, dass in der Version von NUnit die Teardown nicht garantiert läuft (im Falle einer unbehandelten Ausnahme während des Setups oder des Tests).

+0

Aber was schlägst du in meinem Fall vor ??? –

+0

In welcher Umgebung laufen Sie? WinForms? WCF? ASP.Net? –

+0

Ich würde eine Arbeitseinheit in jeder Umgebung verwenden – Paco

Verwandte Themen