Sdílet prostřednictvím


EntityCollection<TEntity>.Remove(TEntity) Metoda

Definice

Odebere objekt z kolekce a označí relaci k odstranění.

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

Parametry

entity
TEntity

Objekt, který bude odebrán z kolekce.

Návraty

truePokud byla položka úspěšně odebrána; v opačném případě . false

Implementuje

Výjimky

entity objekt je null.

Objekt entity není připojen ke stejnému kontextu objektu.

-nebo-

Objekt entity nemá platného správce vztahů.

Příklady

Tento příklad je založený na prodejním modelu Adventure Works. Chcete-li spustit kód v tomto příkladu, musíte již přidat AdventureWorks Sales Model do projektu a nakonfigurovat projekt tak, aby používal Entity Framework. Provedete to provedením postupů v tématu Postupy: Ruční konfigurace projektu Entity Framework a Postupy: Ruční definování modelu a souborů mapování.

Tento příklad používá metodu Remove k odebrání jedné z entit z kolekce a pak zavolá metodu Contains k určení, zda byl objekt odebrán z kolekce.

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)
            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);
    }
}

Poznámky

Metoda Remove také odstraní vztah mezi zdrojovým objektem a objektem, který se odebírá z kolekce. Pokud má relace omezení referenční integrity, volání Remove metody u závislého objektu označí relaci i závislý objekt k odstranění. K tomu dochází, protože omezení označuje, že závislý objekt nemůže existovat bez vztahu k nadřazené. Další informace najdete v tématu ReferentialConstraint – element (CSDL).

Remove vrátí, false pokud zadaný objekt není v kolekci.

Platí pro