Announcement

Collapse
No announcement yet.

MVVM Model

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • MVVM Model

    Hallo,

    ich hab mal ne Frage bezüglich der Datenbankverbindung (Ado.NET). Ich erstelle in meinem MainWindowViewModel die Entities (Entities_Irgendwas = new ....).
    Wie ergebe ich die erstellte Entitie an andere Fenster/Usercontrols korrekt in MVVM?
    Bzw. Mach ich ein Model, welche z.B. einen GetAllProcucts-Befehl hat, welcher eine Liste zurückgibt...

    Danke für die Antworten im Voraus!
    Die Taschenlampe!

    Die perfekte Taschenlampe für Ihr Windows Phone!

    - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
    - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


    Hier gehts zu APP!

  • #2
    Ich würde sagen es kommt drauf an. Es gibt mehrere Möglichkeiten so etwas zu tun (und ich bin noch nicht mal in WPF unterwegs )

    1. Repository Pattern
    Du gibst nur die ID des anzuzeigenden Datensatzes weiter. Das ViewModel bekommt eine Dependency auf Repository injected und holt es sich dort. Nicht vergessen ein Repository muss nicht zwangsläufig einen Datenbankzugriff machen, es kann also auch ein Cache oder ähnliches sein. Das sollte ja vom View aus transparent sein.

    2. Direkte Übergabe des Models an den View
    Ich denke auch das ist durchaus valide. Gerade im Falle eines modalen Views der Daten in dem Datensatz ändert, könnte ich mir auch durchaus vorstellen das Model direkt durch zu reichen.

    3. Ein Repository was das aktuell bearbeitete Item hält
    Auch das ist eventuell ein Möglichkeit. Im Prinzip funktioniert es genauso wie die erste Variante nur dass das Teil direkt weiss welches Item das aktuelle ist.

    Das wären so Varianten die mir einfallen würden. Alle haben Vor- und Nachteile und sollten je nach Anwendungsfall eingesetzt werden. Schwarz und Weiß gibt es da eher nicht

    Comment


    • #3
      Das zweite gefällt mir...
      Das Model durchzureichen klingt interessant. Dann kann ich bei allen Tabellen individuelle abfragen durchführen..

      Ich denke ich werde es so machen...

      Danke!

      Mfg
      Die Taschenlampe!

      Die perfekte Taschenlampe für Ihr Windows Phone!

      - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
      - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


      Hier gehts zu APP!

      Comment


      • #4
        Wie gesagt schwarz oder weiss gibt es nicht. Bau es erstmal so wie es für Dich am einfachsten ist ohne zuuuu viele Abhängigkeiten zu bauen. Da das Model allerdings in der Regel sowieso POCO Klassen sein sollten, sollten sich auch die Abhängigkeiten in Grenzen halten.

        Comment


        • #5
          Morgen!

          Mein Problem ist ja nur der DBContext. Ich müsste dann ja bei jedem Usercontrol oder Fenster dies neu initialisieren, wenn ich dies nicht "weiterreiche". Oder sehe ich das falsch?

          MfG
          Zuletzt editiert von Flo_Plus; 05.07.2012, 12:39.
          Die Taschenlampe!

          Die perfekte Taschenlampe für Ihr Windows Phone!

          - Die APP steuert die echte Blitz-LED an und versorgt Sie mit 100% Leistung!
          - Zudem zeigt die Live-Kachel den aktuellen Akkustand des Telefons an!


          Hier gehts zu APP!

          Comment


          • #6
            Naja eigentlich solltest Du Dir den ja inzjizieren lassen. Somit brauchst Du auch nicht immer einen neuen Context aufmachen. Evtl. auch mal einen Blick auf das Unit of Work Pattern werfen.

            Comment


            • #7
              Hallo,

              wie fanderlf schon erwähnt hat, sollte hier unbedingt mit Repositories (und Unit of Work) gearbeitet werden. Das Repository wird dann dem VM injiziert (od. mittels Service-Locator geholt).
              Wie bei Unit of Work der Name schon suggerieren mag, sollte die Lebensdauer dieser Instanz gerade eben eine Arbeitseinheit sein. Z.B. Kundendateneditieren: die UoW lebt genau so lange wie die Daten editiert werden, danach wird sie verworfen.

              Siehe hierzu Using Repository and Unit of Work patterns with Entity Framework 4.0 - für EF 4.1+ analog.

              mfG Gü
              "Any fool can write code that a computer can understand. Good programmers write code that humans can understand". - Martin Fowler

              Comment

              Working...
              X