Ho un piccolo problema con l'aggiornamento delle entità se l'entità viene modificata all'esterno di DbContext (è un'entità indipendente). Se allego l'entità modificata, lo stato non viene modificato.Come aggiornare le entità che sono modificate al di fuori di DbContext?
Il mio codice è simile al seguente:
var specificationToSave = GetSpecificationFromTmpStore(userSessionGuid);
using (var context = DataContextFactory.GetDataContext())
{
// this works for update, if I change the values inside the context while debugging
// but it breaks with new entities
context.Specifications.Attach(specificationToSave);
// this works for insert new entities, modified entities will be saved as new entities
context.Specifications.Add((specificationToSave);)
context.SaveChanges();
}
so NHibernate ed è il metodo SaveOrUpdate. NHibernate decide a causa dei valori se sta aggiornando o inserendo le entità.
Qual è la procedura migliore per farlo con EF 4.xe con le entità che sono modificate al di fuori di DbContext? Come posso dire all'EF che questa entità è in stato modificato?
Grazie mille :-) Questo è quello che stavo cercando. Il secondo modo è il migliore, ma in questo caso non è possibile. Quindi devo aggiornare direttamente lo stato di DbEntityEntry. Non è una soluzione molto bella ma funziona. –
È vero, se è necessario impostare lo stato di ogni entità correlata di "specificationToSave". per esempio se ho un elenco di elementi modificati nel mio 'specificationToSave'. Spero davvero che ci sia una soluzione semplice per farlo ... –
@ Jürgen genitore: gli scenari figlio richiedono una considerazione speciale, poiché potrebbe essere necessario aggiungere, eliminare o aggiornare i bambini. FWIW In genere faccio solo un hash sui bambini per vedere se qualcuno è cambiato, e se lo ha, quindi per eliminare tutti gli esistenti e inserire di nuovo tutti i bambini. Ma questo sono solo io che sono pigro. – StuartLC