Qual è la differenza tra questo due e quale è preferito? utilizzando lo stato dell'oggetto modifica o lo stato Entry().state
db.ObjectStateManager.ChangeObjectState(employeeFromDB, EntityState.Modified)
vs
context.Entry(employeeFromDB).State = EnitityState.Modified;
Fondamentalmente, si sta invocando una funzione sul System.Data.Objects.ObjectStateManager
sottostante della classe DbContext per modificare una proprietà in modo da recuperarla e modificarla direttamente tramite DbContext.
Nel primo esempio, ChangeObjectState()
può essere utilizzato solo per modificare un oggetto ObjectStateEntry
di un'entità già esistente nel contesto. Se provi a modificare qualcosa che non esiste, otterrai un'eccezione.
Controlla le eccezioni in ObjectStateManager.ChangeObjectState
Nel secondo esempio se l'oggetto non esiste nel contesto che viene aggiunto, si otterrà comunque un'eccezione quando si chiama db.saveChanges()
ma lo stesso approccio potrebbe essere utilizzato per aggiungere un nuovo record semplicemente modificando EntityState.Modified
in EntityState.Added
Dovrai anche prendere l'ObjectContext sottostante dal tuo DbContext usando ((IObjectContextAdapter)context).ObjectContext