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?

È stato utile?

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);
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top