Ich baue eine MVC Web App, die aus 3 Projekten bestehen. Eine für die GUI, eine für die BusinessLogic und eine für den Datenzugriff.ASP.NET MVC - Entfernen von Abhängigkeit von DAL in GUI
Für meinen Datenzugriff habe ich eine generierte Datei von EF und daher habe ich eine generierte Klasse namens "Customer". Um Validierungsattribute für diese Klasse zu erstellen, muss MetaDataType erstellt werden (was im selben Namespace erledigt werden muss und daher in der DAL-Schicht erfolgen muss) - indem ich auf die Datenzugriffsebene von meiner GUI aus zugreife was die ganze Idee, das Projekt zu teilen, verdirbt, weil meine GUI jetzt sowohl meine DAL- als auch BL-Ebene betrifft. Kann ich meine GUI- und DAL-Layer trotzdem getrennt halten, aber trotzdem Validierungsattribute wie [Required] und so weiter verwenden?
Vielen Dank im Voraus.
Wie ich bei meiner Antwort bemerkt habe, mag dies praktisch sein, aber es ist völlig gegen das Konzept der Persistenz Ignoranz - da Sie UI mit dem Domänenmodell mischen würden. Aber niemand ist gezwungen, ein DDD-Programmierer zu sein. – rsenna
@rsenna: Wenn ich mich nicht irre, haben Sie immer noch Ignoranz; Das ist der Sinn von POCO. Solange Sie eine andere Abstraktion haben, wie das Repository-Muster, um die Datenbankaufrufe zu handhaben, können Sie das gesamte Datenbank-Backend ersetzen und Ihre POCO-Entitäten pflegen. Sicher, die POCO-Entitäten werden nicht mehr von EF generiert, aber es gibt keine Abhängigkeit von EF, also spielt es keine Rolle. –
Das Problem, das ich sehe, ist nicht technisch, sondern architektonisch - Sie teilen die ** gleichen ** Entitäten über DAL und UI. Die Präsentation ist also mit denselben Entitäten gekoppelt, die für die Persistenz verwendet werden - und ich glaube nicht, dass dies "Ignoranz" genannt werden könnte ...Aber wieder habe ich das schon einmal gemacht und würde es für einfache Systeme oder stark CRUD-orientiert tun. Alles andere als das würde ich mit Viewmodels für die UI und Domänenentitäten für die Business- und Datenzugriffsebenen gehen. – rsenna