Im Allgemeinen sollte der "Modell" -Teil von MVC als "Darstellungsmodell" oder "Darstellungsmodell" interpretiert werden, dh als eine Klasse, die alle von der Ansicht benötigten Daten und Verhaltensweisen kapselt. Dies kann dem Domänenmodell entsprechen oder nicht.
Domänenmodelle sollten so konzipiert sein, dass sie unabhängig von der Benutzeroberfläche sind. Dies bedeutet, dass solche Modelle nicht mit UI-spezifischen Daten und Verhaltensweisen belastet werden sollten, z. B. wenn festgestellt wird, ob eine bestimmte Schaltfläche aktiviert ist oder nicht.
Sie können auch dieselben Domänenobjekte in verschiedenen Ansichten anzeigen (z. B. Master/Detail oder Anzeige/Bearbeiten). Wenn sich diese Ansichten ausreichend unterscheiden, ist ein View Model für jede View von Vorteil.
Also, im Allgemeinen sollten Sie Ihre Domain-Ebene und Ihre Präsentationsebene unabhängig voneinander entwerfen.
In der Domänenebene können Sie Ihre drei Tabellen als drei Klassen modellieren. Bücher wie Fowlers Patterns of Enterprise Application Architecture und Evans Domain-Driven Design enthalten viele Anleitungen zum Modellieren relationaler Daten als Domänenmodelle.
Wenn es um das Modellieren der Ansichten in MVC geht, ist es am sinnvollsten, ein Modell pro Ansicht zu erstellen. Ein solches View-Modell kann einfach ein einzelnes Domain-Objekt einkapseln, es kann jedoch auch mehrere unterschiedliche Domain-Objekte einkapseln und aggregieren.
Auf diese Weise können Sie die Trennung von Bedenken sicherstellen, und dass Ihre Klassen dem Prinzip der einfachen Verantwortung folgen. Für sehr einfache Szenarien kann es sinnvoll sein, das Domänenmodell und das Darstellungsmodell in einer Schicht zusammenzufassen, aber Sie sollten wissen, dass dies im Wesentlichen bedeutet, dass es kein Domänenmodell in der Lösung gibt - alle Modelle wären reine Darstellungsmodelle .
Wenn ich diese 3 Tabellen beitreten möchte, wo sollte ich den Code einfügen? – Billy
Wenn Sie eine Beziehung "viele zu viele" haben, haben Sie im Allgemeinen eine Tabelle, die die Beziehung darstellt, die wahrscheinlich nicht von einem Modell repräsentiert wird. –
Der offensichtlichste Weg ist das Hinzufügen einer Eigenschaft zu einer Klasse, die die zugehörigen Daten darstellt. (dh die Klasse 'Kunde' hat eine Eigenschaft namens 'Aufträge', die eine Sammlung des Typs 'Auftrag' ist. (Übrigens können Sie das ADO.NET-Entity-Framework verwenden, was all dies für Sie funktioniert) – yosig81