Estoy usando EF con API WEB. Tengo un método PUT que actualiza una entidad que ya está en la base de datos. Ahora mismo tengo esto:
// 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(); }Pero soy perezoso y me gustaría escribir algo como:
dbFleet.update(fleet);Así que no tengo que actualizar cada propiedad por separado.
Estoy seguro de que hay una manera, pero solo pude encontrar respuestas sobre cómo hacer esto con MVC, pero no cuando uso una API WEB y no recibo el estado del modelo.
Gracias
db.Fleets.Attach(fleet); db.Entry(fleet).State = EntityState.Modified; db.SaveChanges();Acabo de encontrar la respuesta...
// PUT api/fleet/5 public void Put(Fleet fleet) { db.Entry(fleet).State = EntityState.Modified; db.SaveChanges(); }Lo único con lo que no estoy contento es que no actualiza el objeto secundario. Fleet tiene FleetAttributes que no se actualizan así. Pero supongo que puedo repetirlos fácilmente...
EDITAR esto funciona para mí:
// 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(); }