Speichern von Viewmodel-Daten in ASP.NET MVC in der Datenbank

7

Ich bin neu bei ASP.net MVC und benutze ein Viewmodel statt Viewbags, um meine Dropdowns zu füllen, seit ich die meisten Leute gesehen habe, die gegen sie empfehlen. Ich habe eine glatte Benutzeroberfläche, die Dropdown-Menüs und Autocompletes (hier nicht gezeigt) kaskadiert, aber ich kann nicht scheinen, meine Daten zurück in die Datenbank gespeichert zu bekommen.

Modelle:

%Vor%

ViewModel:

%Vor%

Controller:

%Vor%

Ich habe ein paar Empfehlungen zur Verwendung von Automapper gesehen, weil EntityState.Modified nicht funktioniert, aber ich bin mir nicht sicher, wie ich es konfigurieren soll, weil die Verwendung des folgenden Codes nicht funktioniert hat.

%Vor%

Irgendwelche Ideen?

    
Jim 30.04.2013, 18:05
quelle

1 Antwort

21

Ihr Ansichtsmodell sollte nicht mit der Datenbank interagieren. Ansichtsmodelle sollten nur in der Präsentationsebene (Benutzeroberfläche) verwendet werden - daher der Begriff "Ansichtsmodell". Sie sollten ein anderes Modell (Datenmodell) haben, das mit Ihrer Datenbank interagiert. Dann sollten Sie eine Art Serviceschicht haben, die Ihre Konvertierung zwischen Ihrem Anzeigemodell und Ihrem Datenmodell (und umgekehrt) übernimmt. Ihr Datenmodell ist das Modell, das von Entity Framework generiert wird (von dem ich annehme, dass es das ist, was Sie verwenden). Um Aktualisierungen Ihrer Datenbank zu verarbeiten, müssen Sie einen Datenkontext instanziieren, die Datenentität aus Ihrer Datenbank abrufen, Änderungen an dieser Entität vornehmen und alle Änderungen in diesem Datenkontext aufrufen. Der Datenkontext zeichnet alle Änderungen an Ihren Entitäten auf und wendet die erforderlichen Änderungen auf Ihre Datenbank an, wenn Sie "Änderungen speichern" aufrufen. Beispiel:

%Vor%

In diesem Beispiel wird der Kontext alle Änderungen an "dataModel" verfolgen. Wenn "context.SaveChanges" aufgerufen wird, werden diese Änderungen automatisch auf die Datenbank angewendet.

    
RiceRiceBaby 30.04.2013, 19:07
quelle