Frage

Ich habe eine ASP.NET -MVC -Anwendung, die Spring.net 1.2 für die Abhängigkeitsinjektion und NHibernate 2.1 für ORM verwendet. Es wurde auf MVC 3 ausgeführt, wobei die S#ARP -Architektur in einer leicht modifizierten Version verwendet wurde, die wir uns selbst zusammengestellt haben, etwas, das ich jetzt bemühe. (Dh ich werde anfangen, referenzierte Sharparch .dlls anstelle von reinem Quellcode zu verwenden.)

Die Initialisierung der Feder erfolgt mit Tipps, die von Tipps entnommen wurden, hier, sowie die gefundene Springservicelocatoradapter gefunden hier. NH wird unter Verwendung von Sharparchs nhiberNateSession.init initialisiert, die unsere beiden Assemblypathen erhalten. Die Zuordnung erfolgt mit HBM XML -Dateien.

Die Entscheidung, zu NH 3 zu wechseln, führte zu einem schwerwiegenden Fall von DLL Hell, dessen Binärdateien von Fluentnh, NH -Validator, Sharparch, Spring und Castle Windsor die Fluentnh, NH -Validator, Sharparch, Spring und Castle Windsor aktualisieren musste. Damit die Dinge viel manueller Arbeit funktionieren ließen, wurde es benötigt, Referenzen zu ändern und kleinere Code -Korrekturen durchzuführen. Dies wurde alles erwartet.

Jetzt läuft die Software gut genug, dass die Frühling initialisiert wird und die DI richtig gemacht wird. Wenn jedoch ein Repository versucht, das Sitzungsobjekt zu verwenden, erhalte ich den folgenden Fehler.

Fehler beim Erstellen von Objekt mit Name '': Keine Dienste vom Typ 'Sharparch.nhiberNate.isionfactoryKeyProvider' definiert

Ich habe versucht, die Ursache dafür für den besten Teil eines Tages herauszufinden. Es scheint mir, als ob SpringservicelocatorAdapter veraltet ist, aber ich kann keine Informationen dazu finden. Das einfache Entfernen der Verwendung von IT führt auch dazu, dass Repositories -Sitzungen null und damit nullreferencexceptions sind. Aber soweit ich weiß, könnte das Problem genauso gut die Art und Weise sein, wie NH initialisiert wird.

Hoffentlich kann mich jemand in die richtige Richtung verweisen. Es fällt mir schwer, da ich nicht derjenige bin, der das System zu Beginn eingerichtet hat, und Listen von Breaking -Änderungen für die Versions -Upgrades sind schwer zu finden.

Danke vielmals! Ich werde natürlich bei Bedarf weitere Informationen bereitstellen.

War es hilfreich?

Lösung

Sie müssen eine Implementation von isSessionFactoryKeyProvider mit Spring registrieren. Die Standardimplementierung ist DefaultSessionFactoryKeyProvider, in Windsor würde die Erklärung so aussehen:

        container.Register(
                Component.For(typeof(ISessionFactoryKeyProvider))
                    .ImplementedBy(typeof(DefaultSessionFactoryKeyProvider))
                    .Named("sessionFactoryKeyProvider"));
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top