Подтвердить что ты не робот

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 и не получения состояния модели.

Спасибо

4b9b3361

Ответ 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();