次の方法で共有


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 Model が使用されています。 この例のコードを実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、Entity Framework を使用するようにプロジェクトを構成しておく必要があります。 これを行うには、「 方法: Entity Framework プロジェクトを手動で構成する 」および 「方法: モデル ファイルとマッピング ファイルを手動で定義する」の手順を完了します。

この例では、Remove メソッドを使用してコレクションからエンティティを 1 つ削除し、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 指定したオブジェクトがコレクション内にない場合に を返します。

適用対象