ASP.NET MVC - Modell von Linq zu Entitäten als ViewModel - ist das eine gute Methode? [geschlossen]

9

Schnelle Fragen wirklich.

Ich baue derzeit eine Site mit asp.net MVC und dem Entity-Framework. Ich habe ein paar Repositories, die Entitäten oder Listen von Entitäten zurückgeben. Ich stelle fest, dass ich in den meisten meiner Seiten Daten aus einer Reihe verwandter Tabellen abrufen muss. Dies ist in Ordnung, solange ich die zugehörigen Entitäten über 'include' in meine Abfragen lade - aber ist das eine gute Vorgehensweise?

Wäre es besser, ein benutzerdefiniertes Viewmodel-Objekt zu erstellen, das nur die benötigten Informationen enthält, oder ist es nicht falsch, einen Objektgraphen zu ziehen, der vielleicht 5-6 Tabellen tief ist, um anzuzeigen, was Sie brauchen? Ihrer Meinung nach?

Entschuldigung, wenn diese Frage nicht zu viel Sinn ergibt. Ich habe vielleicht fundamental falsch verstanden, wie ein Modell hier verwendet werden sollte:)

Danke

    
Sergio 30.09.2009, 15:34
quelle

2 Antworten

2

Ich würde vorschlagen, den Rendering-Code in Ihren Ansichten und den Buchungscode in Ihren Controllern zu überprüfen. Werden sie durch den Ansatz zu kompliziert gemacht? Wenn nicht, sind Sie wahrscheinlich in Ordnung, die Dinge so zu behalten, wie sie sind. Wenn der Ansichts- und Controller-Code durch die Einführung eines benutzerdefinierten Ansichtsmodells erheblich vereinfacht würde, sollten Sie eine neue Ansicht erstellen. Custom-View-Modelle abstrahieren etwas von dieser Komplexität, die wahrscheinlich gerade woanders behandelt wird.

    
DrivenDevelopment 30.09.2009, 15:47
quelle
3

Wenn deine Ansichten beginnen, Dinge wie

zu tun

<% foreach (var order in Model.Orders.Any(x => x.Products.Any(p => p.Category == "xx")) %>

Dann brauchst du definitiv ViewModel. Sie können mit

gehen

ViewData["flattened_orders"]

wenn Sie magischen Saiten bevorzugen, aber ich bezweifle es.

Dann gibt es eine Frage der Präsentationsattribute, die für Ihre Entitäten benötigt werden, dann müssen Sie alle Eigenschaften für sie freilegen, damit der Modellbinder funktionieren kann ... dann benötigen Sie zusätzliche reine Präsentationsinformationen wie Länderliste ...

Für einfache Anwendungen können Sie ViewModel überspringen. Aber für einfache Anwendungen können Sie Response.Write und manuelle SQL trotzdem machen; -)

Ich mag das Post über ähnliches Problem. Der Ansatz, der dort dargestellt wird, mag zunächst zu "akademisch" erscheinen, aber es ist von realen Projekten, und je mehr ich ASP.NET MVC mache, desto mehr mag ich es und komme näher dazu.

    
queen3 30.09.2009 20:04
quelle

Tags und Links