Einfügen eines DbContext in einen FluentValidation-Validator

8

Ich verwende die FluentValidation-Bibliothek, um eine eindeutige Einschränkung für eines meiner Modelle zu erzwingen:

%Vor%

Der ApplicationDbContext -Wert wird mit Hilfe von StructureMap injiziert. Um sicherzustellen, dass der Kontext am Ende jeder Anfrage gelöscht wird, habe ich versucht, ObjectFactory.ReleaseAndDisposeAllHttpScopedObjects() im Handler EndRequest für meine Anwendung aufzurufen.

Leider scheint es so, als ob die Methode Application_EndRequest aufgerufen wird, bevor meine Validator-Klasse ihre Arbeit erledigen kann und der Kontext durch die Zeit, in der FooValidator.BeUnique ausgeführt wird, entsorgt wird.

Gibt es eine bessere Möglichkeit, datenbankabhängige Validierungen mit der FluentValidation-Bibliothek durchzuführen, oder ist dies die einzige Lösung, um diese Logik an anderer Stelle (entweder zur Controller-Aktion, zur Datenbank selbst oder anderswo) zu verschieben?

    
Justin Rusbatch 17.08.2011, 19:28
quelle

1 Antwort

7

Vielleicht ist der Validator nicht http-Bereich (sondern Singleton) und wird nicht mit einem neuen Kontext neu erstellt / injiziert? In diesem Fall versucht es, einen entsorgten Kontext aus einer früheren Anfrage zu verwenden.

    
Tz_ 19.08.2011, 06:27
quelle