EntityCollection<TEntity>.Remove(TEntity) メソッド
定義
重要
一部の情報は、リリース前に大きく変更される可能性があるプレリリースされた製品に関するものです。 Microsoft は、ここに記載されている情報について、明示または黙示を問わず、一切保証しません。
オブジェクトをコレクションから削除して、リレーションシップを削除対象としてマークします。
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
指定したオブジェクトがコレクション内にない場合に を返します。
適用対象
.NET