Laden...

MVVM: ist das Model nur meine Datenbank?

Erstellt von csharpuser21 vor 5 Jahren Letzter Beitrag vor 5 Jahren 2.567 Views
C
csharpuser21 Themenstarter:in
2 Beiträge seit 2018
vor 5 Jahren
MVVM: ist das Model nur meine Datenbank?

Hallo,
ich habe gerade von VB (Access) zu C# "gewechselt". Hier möchte ich zum Ausprobieren und lernen eine kleine Kontaktedatenbank erstellen.

Bisher habe ich meine MySQL Tabelle mit ADO.NET über den MySQL-Treiber ausgelesen und in ein Dataset geschrieben, das funktioniert auch soweit. Jetzt möchte ich aber die Verschiedenen Schichten gleich von Anfang an "richtig" trennen. Zu diesem Thema habe ich mit das MVVM Pattern angesehen. Aber noch Verständnisfragen.

Ist das Model nur meine Datenbank oder auch der Code der die Daten aus der Datenbank anfragt und wieder speichert?
Dann würde in das VielModel "alles" kommen was mein Code für die Anzeige "vorbereitet"

Habe ich das so richtig verstanden?

Die Beispiele die ich gefunden habe nutzen meisten nur eine Classe aus der die Daten "kommen", leider keine Datenbank.

Gruß

Maik

16.806 Beiträge seit 2008
vor 5 Jahren

MVVM ist (eher) ein UI-Pattern, keine Lösung für eine gesamte Software Architektur für das Trennen von Verantwortlichkeiten über die gesamte Applikation hinweg.
[Artikel] Drei-Schichten-Architektur

Das Model in MVVM hat prinzipiell nichts mit der Datenhaltung oder Applikationslogik zutun.
Prinzipiell ist dem MVVM auch "egal" woher die Daten kommen; es braucht nur eine Schnittstelle, wo die Daten angefragt werden (in der Regel aber die Logikschicht, nicht direkt auf die Datenbank).

4.931 Beiträge seit 2008
vor 5 Jahren

Hallo,

du mußt unterscheiden zwischen der allgemeinen [Artikel] Drei-Schichten-Architektur und MVVM. Bei MVVM (welches dann innerhalb der UI-Schicht eingesetzt wird) bezieht sich Model auf die Schnittstelle zur Business Logic, d.h. dort kommen keine Datenbank-spezifischen Methoden rein. Im ViewModel greifst du auf die Daten aus dem Model zu und bereitest diese für die View auf (bzw. analog in die andere Richtung).

Für ein kleines Textprojekt kannst du ein DataSet (bzw. DataTable) als Modell verwenden, bei größeren sollte man dann konkrete (eigene) Klassen dafür verwenden (denn selten sind die Daten reine Tabellen).

5.657 Beiträge seit 2006
vor 5 Jahren

Ganz allgemein gesagt zieht sich die Schichtentrennung durch die gesamte Anwendung. Es gibt auch kein richtig und falsch, wie viele Diskussionen dazu im Forum zeigen. Aber die Frage "Mache ich es richtig?" kann man sich eigentlich immer mit "Kann ich meinen Code testen?" beantworten. Wenn du Funktionen aus allen Schichten deiner Anwendung mit Unit-Tests abdecken kannst, dann hast du die Veantwortlichkeiten richtig getrennt. Wenn nicht, dann nicht.

Ein paar Stichworte, die dir weiterhelfen könnten, wären z.B. noch: Dependency Injection / IoC, Mocking, Repository Pattern / Unit of Work, und [Artikel] Unit-Tests: Einführung in das Unit-Testing mit VisualStudio

Weeks of programming can save you hours of planning

6.911 Beiträge seit 2009
vor 5 Jahren

Hallo csharpuser21,

Das Model-View-ViewModel (MVVM) Entwurfsmuster für WPF kennst du?

mfG Gü

Stellt fachliche Fragen bitte im Forum, damit von den Antworten alle profitieren. Daher beantworte ich solche Fragen nicht per PM.

"Alle sagten, das geht nicht! Dann kam einer, der wusste das nicht - und hat's gemacht!"

C
csharpuser21 Themenstarter:in
2 Beiträge seit 2018
vor 5 Jahren

Danke für die zahlreichen Anworten. Ich werde mir die Artikel am Wochenende durchlesen und dann berichten oder ggf. weitere Fragen stellen.

Gruß