Heim >Backend-Entwicklung >C++ >Entity Framework: „Remove()' vs. „DeleteObject()' – wann welche verwenden?
Der Unterschied und die Anwendung von .Remove() und .DeleteObject() im Entity Framework
Bei der Verwendung von Entity Framework stoßen Sie möglicherweise auf zwei verschiedene Methoden zum Löschen von Datenbankelementen: EntityCollection.Remove()
und ObjectContext.DeleteObject()
. Obwohl beide darauf abzielen, Entitäten aus der Datenbank zu entfernen, unterscheiden sich ihre Funktionen und Merkmale.
EntityCollection.Remove()
Diese Methode entfernt die Beziehung zwischen der übergeordneten Entität und der untergeordneten Entität. Mit anderen Worten: Die Beziehung wird im Kontext als gelöscht markiert, ohne dass die untergeordnete Entität selbst tatsächlich gelöscht wird. Das EntityState
der untergeordneten Entitäten bleibt unverändert.
Abhängig von der Beziehung zwischen der übergeordneten Entität und der untergeordneten Entität ist die Auswirkung der Verwendung von SaveChanges
nach dem Aufruf von .Remove()
unterschiedlich:
SaveChanges
ebenfalls als gelöscht markiert und aus der Datenbank entfernt. ObjectContext.DeleteObject()
Diese Methode markiert die angegebene Entität in ObjectContext
als gelöscht. Das EntityState
der Entität wird sofort auf Deleted
gesetzt. Nach dem Aufruf von SaveChanges
sendet EF die SQL-Anweisung DELETE
an die Datenbank. Wenn alle notwendigen Bedingungen erfüllt sind (z. B. keine Referenzeinschränkungen verletzt werden), wird die Entität aus der Datenbank entfernt.
Wann welche Methode anzuwenden ist
SaveChanges
aus der Datenbank zu entfernen. Weitere Hinweise
.Remove()
gibt einen booleschen Wert zurück, der Erfolg oder Misserfolg angibt, während .DeleteObject()
„void“ zurückgibt. .Remove()
nach SaveChanges
zu einer Einschränkungsverletzung führen. .DeleteObject()
Markieren Sie die Entität explizit als gelöscht und stellen Sie sicher, dass sie aus der Datenbank entfernt wird. Das obige ist der detaillierte Inhalt vonEntity Framework: „Remove()' vs. „DeleteObject()' – wann welche verwenden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!