6

Posso fare qualcosa di simile al seguente (che non funziona) senza dover impostare esplicitamente ogni proprietà dell'oggetto. Il prodotto è l'oggetto creato dal raccoglitore modello predefinito dall'invio di un modulo e ProductInDb è l'oggetto nel contesto/database che si desidera sovrascrivere/aggiornare. La chiave primaria ProductID è la stessa su entrambi.Salvataggio delle modifiche/aggiornamento di un oggetto esistente nel set di dati con Entity FrameWork e non dover impostare singolarmente ciascuna proprietà

var ProductInDb = context.Products.FirstOrDefault(x => x.ProductID == product.ProductID); 

        ProductInDb = product; 

        context.SaveChanges(); 

risposta

13

È possibile collegare l'esistente product e impostare il suo stato come Modified.

Se si utilizza DbContext API

context.Products.Attach(product); 
context.Entry(product).State = EntityState.Modified; 

context.SaveChanges(); 

Per ObjectContext

context.Products.Attach(product); 
context.ObjectStateManager.ChangeObjectState(product, EntityState.Modified); 

context.SaveChanges(); 
+0

Non contiene una definizione di "Entry". Devo fare riferimento a qualcosa? Già usando System.Data.Objects; Cos'altro ? Premendo ctrl +. non dà nulla per l'entrata. – LaserBeak

+0

@LaserBeak Sembra che tu stia usando 'ObjectContext'. Vedi la mia risposta aggiornata. – Eranga

+0

@Eranga si prega di vedere la mia domanda seguente: http://stackoverflow.com/questions/16085654/pk-violation-while-updating-via-ef/16086406?noredirect=1#16086406 –