Condividi tramite


EntityCollection<TEntity>.Remove(TEntity) Metodo

Definizione

Rimuove un oggetto dalla raccolta 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 dalla raccolta.

Restituisce

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

Implementazioni

Eccezioni

L'oggetto entity è null.

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

-oppure-

L'oggetto entity non contiene un gestore delle relazioni valido.

Esempio

Questo esempio è basato sul modello Sales di Adventure Works. Per eseguire il codice incluso in questo esempio, è necessario avere già aggiunto il modello Sales di Adventure Works al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. A tale scopo, completare le procedure in Procedura: Configurare manualmente un progetto Entity Frameworke Procedura: Definire manualmente il modello e i file di mapping.

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

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 metodo Remove elimina anche la relazione tra l'oggetto di origine e l'oggetto rimosso dalla raccolta. Se la relazione ha un vincolo di integrità referenziale, la chiamata al metodo Remove su un oggetto dipendente contrassegna per eliminazione sia la relazione che l'oggetto dipendente. Questo si verifica perché il vincolo indica che l'oggetto dipendente non può esistere senza una relazione con il padre. Per altre informazioni, vedere Elemento ReferialConstraint (CSDL).

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

Si applica a