So aktualisieren Sie verknüpfte Entitäten in Entity Framework

8

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?

%Vor%     
Marthijn 08.12.2011, 13:20
quelle

3 Antworten

3

Ich habe es gelöst, indem ich ClassA mit einem Fremdschlüssel in ClassB geändert habe und den Wert von BId :

gesetzt habe %Vor%

Warum übernimmt diese Fremdschlüsseleigenschaft den Job anstelle des generierten Fremdkiefers von EF?

    
Marthijn 09.12.2011, 09:24
quelle
2

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.

%Vor%

Auf diese Weise verfolgt EF entity und weiß, dass ein Update darauf angewendet wird.

    
Yuck 08.12.2011 13:25
quelle
0

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

Ссылка

    
Adam Tuliper - MSFT 08.12.2011 13:50
quelle