Ich habe EF 4 im Projekt implementiert. Darin befinden sich Tabellen Kunden und Bestellung. Welche Beziehung hat (Kunde) zu vielen (Bestellung).
Ich erstelle ein Viewmodel für beide (CustomerViewModel und OrderViewModel), das von meiner Domain-Ebene an die Interface-Ebene (in diesem Fall MVC) übergeben wird.
Jetzt ist die Frage "muss ich beide Viewmodel referenzieren? zum Beispiel in customerviewmodel hat IEnumerable<OrderViewModel>
und in orderviewmodel hat CustomerViewModel
. Wenn ja, wie entwerfe ich es (als Best Practice), so dass IEnumerable<OrderViewModel>
und CustomerViewModel
wird mit der richtigen Referenz gefüllt?
Ich würde immer das Design von ViewModels mit Blick auf die spezifische Sichtweise vorantreiben, niemals aus der Sicht des Domänenmodells (= die Entitäten). Wie ein ViewModel aussieht, hängt davon ab, was Sie anzeigen möchten und was Sie in einer Ansicht ändern möchten.
Als Ergebnis haben Sie nicht die OrderViewModel
und die CustomerViewModel
, weil Sie verschiedene Ansichten haben, die eine Bestellung oder einen Kunden oder Teile davon anzeigen oder bearbeiten. Also, Sie haben diese ViewModels für einen bestimmten Zweck und Ansicht und daher mehrmals in verschiedenen Variationen.
Angenommen, Sie haben eine OrderEditView
und diese Ansicht ermöglicht es, Bestellinformationen zu bearbeiten und den Kunden dieser Bestellung anzuzeigen. Sie hätten ein OrderEditViewModel
wie folgt:
Dieser OrderEditCustomerViewModel
benötigt keinen Verweis auf OrderEditViewModel
.
Sie können dieses ViewModel wie folgt auffüllen:
%Vor% Wenn Sie andererseits ein CustomerEditView
haben, mit dem Sie Kundeninformationen bearbeiten und die Bestellungen des Kunden in einer Liste anzeigen können, könnte das ViewModel wie folgt aussehen:
Hier benötigt CustomerEditOrderViewModel
keinen Verweis auf CustomerEditViewModel
und Sie können das ViewModel auf diese Weise aus der Datenbank erstellen, zum Beispiel:
Die Customer(*)ViewModel
s und die Order(*)ViewModel
s unterscheiden sich in Bezug auf die erforderlichen Referenzen, die Eigenschaften und die Datenanmerkungen, abhängig von der Ansicht, in der sie verwendet werden.
Unter Berücksichtigung dieser Überlegungen verschwindet die Frage nach gegenseitigen korrekten Referenzen zwischen OrderViewModel
und CustomerViewModel
, da Sie normalerweise keine solche bidirektionale Referenz für Ihre Ansichten benötigen.
Tags und Links entity-framework viewmodel