EF Elimina oggetto Bambino
Domanda
Quando si rimuove un'entità figlio della collezione controllante ho notato che EF imposta lo stato bambino soggetto di essere modificati, invece di eliminare.
C'è un altro immobile entro il manager oggetto entità che stabilisce che venga cancellato?
Di seguito è riportato il codice che sto usando nel mio metodo Save nel repository EF trovare elementi figlio che sono stati modificati e quindi eliminarli.
Dim orphans = DataContextFactory.GetWMSDBContext().ChangeTracker.Entries().Where(Function(e) (e.State = EntityState.Modified) AndAlso TypeOf e.Entity Is StockTransferItem)
For Each orphan In orphans
orphan.State = EntityState.Deleted
Next
Il problema che sto avendo sta cercando di rilevare la differenza tra l'aggiornamento e la cancellazione perché lo stato è impostato su modificato per entrambi. Al momento sta cancellando la voce quando aggiorno il record pure. Posso rilevare tra i due stati?
Soluzione
L'EF dice che l'oggetto viene modificato piuttosto che eliminato perché rimuoverlo da una collezione genitore sta modificando, non eliminarlo. Per eliminarlo, utilizzare il metodo DeleteObject()
sul set oggetto che contiene l'oggetto che si desidera eliminare, qualcosa come:
myObjectContext.StockTransferItems.DeleteObject(stockTransferItemToDelete);