다음을 통해 공유


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 판매 모델을 프로젝트에 추가하고 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)
            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 합니다.

적용 대상