Wie kann ich Arbeitseinheitsmuster in einem WCF-Dienst mit Autofac implementieren?Implementieren der Arbeitseinheit in einem WCF-Dienst mit Autofac
Das Einfügen der gleichen Instanz pro Aufruf (oder in Autofac Terms LifetimeScope) der Einheit der Arbeit Schnittstelle in meine Dienste und Repositories ist einfach mit Autofacs wcf-Integration - was ich möchte, ist eine Möglichkeit, die Änderung der Arbeitseinheit zu verpflichten Rückgabe des WCF-Serviceanrufs NUR, wenn es keine Ausnahmen gab.
Ich habe Using a Custom Endpoint Behavior with WCF and Autofac gesehen, das ist im Grunde, wie ich begann, aber das behandelt Ausnahmen nicht.
Derzeit habe ich eine IOperationInvoker
, die die Arbeitseinheit in der Invoke startet und nur dann festlegt, wenn es keine Ausnahmen gab. Das Problem bei diesem Ansatz besteht darin, dass ich meine Arbeitseinheitsinstanz innerhalb der Invoke
-Methode auflösen muss, die mir eine andere Instanz als die in meine Dienste und Repositorys unter Verwendung von AutofacInstanceProvider
injizierte Instanz gibt.
Nehmen wir an, wir haben ein 'IUnitOfWork' im Container registriert. Wie können wir einen Service-Aufruf damit umbrechen und 'SaveChanges()' nur aufrufen, wenn keine Ausnahme aufgetreten ist? Oder müssen wir die UoW im Service-Konstruktor nehmen? – jgauffin
Wenn Sie Serviceanruf sagen, meinen Sie WCF-Serviceanruf? Wenn ja, dann zeigt der oben angegebene Link, wie Sie das tun können. Das einzige Problem ist, ich muss noch einen Weg finden, nur die UoW zu speichern, wenn es keine Ausnahme bei der Verwendung von AutoFac gab. –
Sie sagten es selbst =) 'was ich danach bin, ist ein Weg, um die Einheit der Arbeit Änderungen bei der Rückkehr von WCF Service Anruf offensichtlich nur dann, wenn es keine Ausnahmen gab. Das ist der schwierige Teil und was ich suche. – jgauffin