Frage

Ich bin mit Subsonic-Repository-Muster (2.1) für asp.net Mvc application.In meine Anwendung, gibt es viele Repositories wie categoryRepository, Blogrepository etc.Inside jedes dieser Repository i Unterschall Aufruf bin DB.Select().From()...ExecuteReader() der und dann laden Domain-Objekte von den Leser.

In der Controller-Aktion i machen mehrere Anrufe aus diesen Repositories für z.

List<IBlog> blogs=_blogRepository.GetHottestBlogs();

List<ICategory> categories=_categoryRepository.GetAll();

muss ich dafür jedes unitofwork Muster implementieren? .My Zweifel, dass, wie Unterschall führt jede Operation DB.Update / Insert / Select .ist ein TransactionScope genug ist für Batch-Update oder muss ich zu verwenden SharedDbConnectionScope haben, besser werden Leistung?

War es hilfreich?

Lösung

Mit SubSonic müssen Sie Transaction und SharedDbConnectionScope kombinieren. Andernfalls wird jeder Befehl eine eigene dedizierte Verbindung ist, die nach der Ausführung angeordnet ist, die ein implizites Commit führen wird (zumindest für MySQL und SQL Server glaube ich).

Jede SubSonic Abfrage innerhalb eines SharedDbConnectionScope die gleiche Verbindung teilen, so dass Sie die TransactioScope verwenden können.

Und Sie haben die SharedDbConnectionScope vor der Transaction zu verwenden, da sonst einige Anbieter nicht erkennen, dass Sie eine Transaktion ausgeführt werden.

using (new SharedDbConnectionScope())
{
    using (TransactionScope ts = new TransactionScope()
    {

        // Do some sh*i ;)
        ts.Complete();
    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top