Domain-Objekt-Validierung vs Ansicht Modellvalidierung

8

Ich verwende ASP.NET MVC 3 und verwende FluentValidation, um meine Ansichtsmodelle zu validieren. Ich bin nur ein wenig besorgt, dass ich nicht auf der richtigen Spur bin. Soweit ich weiß, sollte die Modellvalidierung für das Domain-Objekt durchgeführt werden. Mit MVC verfügen Sie möglicherweise über mehrere ähnliche Ansichtsmodelle, die überprüft werden müssen. Was passiert, wenn eine Eigenschaft eines Domänenobjekts in mehr als einem Ansichtsmodell vorkommt? Jetzt validieren Sie die gleiche Eigenschaft zweimal und stimmen möglicherweise nicht mehr überein. Wenn ich also ein Benutzerdomänenobjekt habe, möchte ich die Validierung für dieses Objekt durchführen. Was nun passiert, wenn ich UserAViewModel und UserBViewModel habe, müssen jetzt mehrere Validierungen durchgeführt werden.

In meiner News-Klasse habe ich eine Eigenschaft namens Titel, die ein Pflichtfeld ist. In meinem Ansichtsmodell habe ich auch eine Title-Eigenschaft. Ich verwende AutoMapper, um News und NewsViewModel zuzuordnen. Diese Validierung findet also zweimal statt. Wann findet die Validierung des Domänenmodells statt und wann findet die Validierung des Modells statt?

Das obige Szenario ist nur ein Beispiel. Bitte kritisieren Sie es nicht.

    
Brendan Vogt 21.12.2010, 12:42
quelle

2 Antworten

16

Es ist eine feine Unterscheidung, aber die Validierung Ihres Ansichtsmodells besteht darin, korrekte Benutzereingaben zu validieren und eine Antikorruptionsschicht für Ihr Domänenmodell zu bilden, während die "Validierung" in Ihrem Domänenmodell Geschäftsregeln erzwingt. Es ist völlig normal und Sie sollten die Validierung auf beiden Ebenen haben. Tatsächlich ist es möglich, dass UserAViewModel eine etwas andere Eingabeüberprüfung von UserBViewModel hat. Was Ihre Frage anbelangt, versuche ich generell, Domain-Objekte nicht durch mein ViewModel zu exponieren und stattdessen zwischen ihnen zu mappen (oft mit AutoMapper), so dass Ihre ViewModels wirklich Antikorruptions-Layer sind und nicht Eigentumsboxen von Domain-Modellen. Hoffe das hilft.

    
Raoul 21.12.2010, 13:26
quelle
1
  

Was passiert, wenn eine Eigenschaft von a   Domänenobjekt tritt in mehreren auf   Modell ansehen?

Das sollte nicht passieren. Ansichtsmodelle sollten vollständig von Ihrer Domain getrennt sein.

Beantwortet das Ihre Frage?

    
jfar 21.12.2010 13:20
quelle