2015-06-30 30 views
10

Używam EF z WEB API. Mam metodę PUT, która aktualizuje podmiot, który już jest w db. Teraz mam to:EntityFramework z WEB API, zaktualizuj wszystkie właściwości

 // 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(); 
     } 

Ale jestem leniwy i po prostu lubię pisać coś takiego:

dbFleet.update(fleet); 

Więc nie muszę aktualizować każdą mienia przez własną rękę.

Jestem pewien, że istnieje sposób, ale mogłem tylko znaleźć odpowiedzi na to, jak to zrobić z MVC, ale nie w przypadku korzystania z interfejsu API WEB i nie otrzymywania stanu modelu.

Dzięki

Odpowiedz

8

Wystarczy znaleźć odpowiedź ...

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

Jedyną rzeczą, nie jestem zadowolony z jest to, że nie aktualizuje obiektu podrzędnego. Flota ma FleetAttributes, które nie są aktualizowane w ten sposób. Ale myślę, że można łatwo je pętla ...

EDIT działa to dla mnie:

// 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! Utknąłem też przy aktualizowaniu obiektu podrzędnego. Zrobiłeś to bardzo dobrze. Dzięki. – Imon

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