EntityFramework с WEB API, обновить все свойства
Я использую EF с WEB API.
У меня есть метод PUT, который обновляет объект, который уже находится в db.
Прямо сейчас у меня есть это:
// 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 и не получения состояния модели.
Спасибо
Ответы
Ответ 1
Только что нашел ответ...
// 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();
}
Ответ 2
db.Fleets.Attach(fleet);
db.Entry(fleet).State = EntityState.Modified;
db.SaveChanges();