EntityCollection<TEntity>.Remove(TEntity) Metodo

Definizione

Rimuove un oggetto dall'insieme e contrassegna la relazione per l'eliminazione.

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

Parametri

entity
TEntity

Oggetto da rimuovere dall'insieme.

Valori restituiti

true se l'elemento è stato rimosso correttamente; in caso contrario, false.

Implementazioni

Eccezioni

entity l'oggetto è null.

L'oggetto entity non è associato allo stesso contesto dell'oggetto.

oppure

L'oggetto entity non dispone di un gestore di relazioni valido.

Esempio

Questo esempio è basato sul modello Adventure Works Sales. Per eseguire il codice in questo esempio, è necessario aver già aggiunto il modello AdventureWorks Sales al progetto e configurato il progetto per l'uso di Entity Framework. A tale scopo, completare le procedure in Come: Configurare manualmente entity Framework Project e Come: Definire manualmente i file di modello e mapping.

In questo esempio viene utilizzato il Remove metodo per rimuovere una delle entità dalla raccolta e quindi chiamare il Contains metodo per determinare se l'oggetto è stato rimosso dall'insieme.

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

Commenti

Il Remove metodo elimina inoltre la relazione tra l'oggetto di origine e l'oggetto da rimuovere dall'insieme. Se la relazione ha un vincolo di integrità referenziale, la chiamata al Remove metodo su un oggetto dipendente contrassegna sia la relazione che l'oggetto dipendente per l'eliminazione. Ciò si verifica perché il vincolo indica che l'oggetto dipendente non può esistere senza una relazione con l'elemento padre. Per altre informazioni, vedere Elemento ReferialConstraint (CSDL).

Remove restituisce false quando l'oggetto specificato non si trova nell'insieme.

Si applica a