2015-06-30 4 views
10

Ich verwende EF mit WEB-API. Ich habe eine PUT-Methode, die eine Entität aktualisiert, die bereits in der Datenbank ist. Im Moment habe ich dies:EntityFramework mit WEB-API, alle Eigenschaften aktualisieren

 // PUT api/fleet/5 
     public void Put(Fleet fleet) 
     { 
      Fleet dbFleet = db.Fleets.Find(fleet.FleetId); 
      dbFleet.Name = fleet.Name; 
      dbFleet.xy= fleet.xy; 
      //and so on.... 
      db.SaveChanges(); 
     } 

Aber ich bin faul und würde wie etwas schreiben:

dbFleet.update(fleet); 

Also ich habe nicht jede Eigenschaft durch seine eigene zu aktualisieren.

Ich bin sicher, es gibt einen Weg, aber ich konnte nur Antworten finden, wie dies mit MVC zu tun, aber nicht, wenn ein Web-API und nicht mit dem Modellzustand zu empfangen.

Dank

Antwort

8

gefunden einfach die Antwort ...

// PUT api/fleet/5 
public void Put(Fleet fleet) 
{ 
    db.Entry(fleet).State = EntityState.Modified; 
    db.SaveChanges(); 
} 

Das Einzige, was ich nicht zufrieden bin, ist, dass es nicht untergeordnetes Objekt nicht aktualisiert. Flotte hat FleetAttributes, die nicht so aktualisiert werden. Aber ich denke, ich kann sie leicht Schleife ...

EDIT dies funktioniert für mich:

// PUT api/fleet/5 
public void Put(Fleet fleet) 
{ 
    db.Entry(fleet).State = EntityState.Modified; 
    foreach (var item in fleet.FleetAttributes) 
    { 
     db.Entry(item).State = EntityState.Modified; 
    } 
    db.SaveChanges(); 
} 
+0

Nice! Ich war auch am Aktualisieren des untergeordneten Objekts fest. Du hast es sehr gut gemacht. Vielen Dank. – Imon

14
db.Fleets.Attach(fleet); 
db.Entry(fleet).State = EntityState.Modified; 
db.SaveChanges();