Поделиться через


EntityCollection<TEntity>.Remove(TEntity) Метод

Определение

Удаляет объект из коллекции и помечает связь к удалению.

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

Параметры

entity
TEntity

Объект, который должен быть удален из коллекции.

Возвращаемое значение

true, если элемент был успешно удален; в противном случае — false.

Реализации

Исключения

Объект entity имеет значение null.

Объект entity не присоединен к тому же контексту объекта.

-или-

У объекта entity нет допустимого диспетчера связей.

Примеры

Этот пример основан на модели Adventure Works Sales. Чтобы запустить код, используемый в данном примере, нужно сначала добавить к проекту модель AdventureWorks Sales и настроить его для использования платформы Entity Framework. Для этого выполните процедуры, описанные в разделах Практическое руководство. Настройка проекта Entity Framework вручную и Практическое руководство. Определение модели и файлов сопоставления вручную.

В этом примере используется метод Remove для удаления одной сущности из коллекции, а затем вызывается метод Contains, чтобы определить, был ли объект удален из коллекции.

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

Комментарии

Метод Remove также удаляет связь между исходным объектом и объектом, удаляемым из коллекции. Если связь содержит ограничение ссылочной целостности, при вызове метода Remove для зависимого объекта и этот объект, и связь будут помечены к удалению. Это происходит из-за того, что ограничение показывает, что зависимый объект не может существовать без связи с родительским объектом. Дополнительные сведения см. в разделе Элемент ReferentialConstraint (CSDL).

Remove возвращает значение false , если указанный объект отсутствует в коллекции.

Применяется к