2015-06-30 2 views
10

Я использую EF с WEB API. У меня есть метод PUT, который обновляет объект, который уже находится в db. Сейчас у меня есть это:EntityFramework с WEB API, обновить все свойства

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

Но я ленивый и просто хотел бы написать что-то вроде:

dbFleet.update(fleet); 

Так что не нужно обновлять каждый объект по своей собственной.

Я уверен, что есть способ, но я могу найти ответы на вопрос о том, как это сделать с MVC, но не при использовании WEB API и не получения состояния модели.

Благодаря

ответ

8

Просто нашел ответ ...

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

Единственное, что я не доволен, что он не обновляет дочерний объект. У Fleet есть FleetAttributes, которые не обновляются так. Но я предполагаю, что я могу легко цикл их ...

EDIT это работает для меня:

// 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! Я также застрял в обновлении дочернего объекта. Вы сделали это очень хорошо. Благодарю. – Imon

14
db.Fleets.Attach(fleet); 
db.Entry(fleet).State = EntityState.Modified; 
db.SaveChanges(); 
Смежные вопросы