Freigeben über


EntityCollection<TEntity>.Remove(TEntity) Methode

Definition

Entfernt ein Objekt aus der Auflistung und markiert die Beziehung zum Löschen.

public:
 virtual bool Remove(TEntity entity);
public bool Remove (TEntity entity);
override this.Remove : 'Entity -> bool
Public Function Remove (entity As TEntity) As Boolean

Parameter

entity
TEntity

Das aus der Auflistung zu entfernende Objekt.

Gibt zurück

true, wenn das Element erfolgreich entfernt wurde, andernfalls false.

Implementiert

Ausnahmen

Das entity-Objekt ist null.

Das entity-Objekt ist nicht an denselben Objektkontext angefügt.

- oder -

Das entity-Objekt verfügt über keinen gültigen Beziehungsmanager.

Beispiele

Dieses Beispiel beruht auf dem AdventureWorks Sales-Modell. Zum Ausführen des Codes in diesem Beispiel müssen Sie dem Projekt bereits das AdventureWorks Sales-Modell hinzugefügt und das Projekt zur Verwendung des Entity Framework konfiguriert haben. Führen Sie hierzu die Verfahren unter Vorgehensweise: Manuelles Konfigurieren eines Entity Framework-Projekts und Vorgehensweise: Manuelles Definieren der Modell- und Zuordnungsdateien aus.

In diesem Beispiel wird die Remove-Methode verwendet, um eine der Entitäten aus der Auflistung zu entfernen. Anschließend wird die Contains-Methode aufgerufen, um zu ermitteln, ob das Objekt aus der Auflistung entfernt wurde.

using (AdventureWorksEntities context =
    new AdventureWorksEntities())
{
    Contact contact = new Contact();

    // Create a new SalesOrderHeader.
    SalesOrderHeader newSalesOrder1 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder1);

    // Create another SalesOrderHeader.
    SalesOrderHeader newSalesOrder2 = new SalesOrderHeader();
    // Add SalesOrderHeader to the Contact.
    contact.SalesOrderHeaders.Add(newSalesOrder2);

    // Get all related ends
    IEnumerable<IRelatedEnd> relEnds =
        ((IEntityWithRelationships)contact)
        .RelationshipManager.GetAllRelatedEnds();

    foreach (IRelatedEnd relEnd in relEnds)
    {
        // Get Entity Collection from related end
        EntityCollection<SalesOrderHeader> entityCollection =
            (EntityCollection<SalesOrderHeader>)relEnd;

        Console.WriteLine("EntityCollection count: {0}",
            entityCollection.Count);
        // Remove the first entity object.
        entityCollection.Remove(newSalesOrder1);

        bool contains = entityCollection.Contains(newSalesOrder1);

        // Write the number of items after one entity has been removed
        Console.WriteLine("EntityCollection count after one entity has been removed: {0}",
            entityCollection.Count);

        if (contains == false)
            Console.WriteLine("The removed entity is not in in the collection any more.");

        //Use IRelatedEnd to add the entity back.
        relEnd.Add(newSalesOrder1);
        Console.WriteLine("EntityCollection count after an entity has been added again: {0}",
            entityCollection.Count);
    }
}

Hinweise

Die Remove-Methode löscht auch die Beziehung zwischen dem Quellobjekt und dem Objekt, das aus der Auflistung entfernt wird. Wenn die Beziehung über eine Einschränkung zur referenziellen Integrität verfügt, werden beim Aufrufen der Remove-Methode für ein abhängiges Objekt sowohl die Beziehung als auch das abhängiges Objekt zum Löschen markiert. Dies geschieht, da mit der Einschränkung angegeben wird, dass das abhängige Objekt nicht ohne eine Beziehung zum übergeordneten Element existieren kann. Weitere Informationen finden Sie unter ReferentialConstraint-Element (CSDL).

Remove gibt zurück false , wenn sich das angegebene Objekt nicht in der Auflistung befindet.

Gilt für: