Ich habe ein MVC-Projekt und verwende Entity Framework Code First und POCO-Objekte für die Datenbank. Zum Beispiel:
%Vor% Ich habe ein ActionResult, das ein Modell erstellt oder bearbeitet. Das Problem ist, wenn ich dieses ActionResult aufrufen, um das Modell zu aktualisieren, und model.B
wurde geändert, die Beziehung wird nicht in der Datenbank gespeichert. Wenn das ActionResult aufgerufen wird, um ein neues Objekt zu erstellen, funktioniert es wie erwartet. Wie löse ich das?
Sie können nicht einfach anrufen:
%Vor% Die Entität muss zuerst aus dem Kontext abgerufen werden, damit EF mit der Verfolgung beginnen kann. Anschließend sollten Sie Änderungen an dieser Entität vornehmen, bevor Sie context.SaveChanges()
aufrufen.
Auf diese Weise verfolgt EF entity
und weiß, dass ein Update darauf angewendet wird.
Wenn Sie den Status an das geänderte Entitätsframework anfügen und dann festlegen, werden alle Eigenschaften für die Aktualisierung gesendet. Sie müssen nicht den Otter-Ansatz hier unten nehmen, da dies eine ganze getrennte Ladung verursacht. Wenn Sie es so machen, ist es sinnlos, ein Modell, nur eine ID zu übergeben, und dann rufen Sie TryUpdateModel auf, um die Eigenschaften aus dem Formular auszufüllen.
Persönlich ist der hier geänderte Anhang ein wenig sauberer, da er wegen der Ladedaten keinen vollständigen Umlauf benötigt
Tags und Links asp.net-mvc-3 c# entity-framework ef-code-first