ObjectContext.Detach(Object) メソッド

定義

オブジェクト コンテキストからオブジェクトを削除します。

public:
 void Detach(System::Object ^ entity);
public void Detach(object entity);
member this.Detach : obj -> unit
Public Sub Detach (entity As Object)

パラメーター

entity
Object

デタッチするオブジェクト。 entityのみが削除されます。同じObjectStateManagerで追跡されている関連オブジェクトがある場合、それらのオブジェクトは自動的にデタッチされません。

例外

entitynull です。

entityはこのObjectContextに関連付けられません (たとえば、新しく作成され、まだコンテキストに関連付けられていないか、他のコンテキストを通じて取得されたか、既にデタッチされています)。

// This method is called to detach SalesOrderHeader objects and
// related SalesOrderDetail objects from the supplied object
// context when no longer needed by the application.
// Once detached, the resources can be garbage collected.
private static void DetachOrders(ObjectContext context,
    SalesOrderHeader order)
{
    try
    {
        // Detach each item from the collection.
        while (order.SalesOrderDetails.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetails.First());
        }

        // Detach the order.
        context.Detach(order);
    }
    catch (InvalidOperationException ex)
    {
        Console.WriteLine(ex.ToString());
    }
}

注釈

ObjectStateManagerからオブジェクトを削除します。 これにより、そのオブジェクトの変更の追跡と ID 解決が無効になります。

Detach メソッドが呼び出されると、システムはこのオブジェクトを指す参照を保持しなくなり、ガベージ コレクターによって収集できるようになります。

ガベージ コレクションは、デタッチされたオブジェクトへの参照がユーザー コードにない場合にのみ発生します。

オブジェクトをデタッチする場合は、次の考慮事項が適用されます。

  • Detach は、メソッドに渡される特定のオブジェクトにのみ影響します。 デタッチされているオブジェクトにオブジェクト コンテキスト内の関連オブジェクトがある場合、それらのオブジェクトはデタッチされません。

  • オブジェクトをデタッチしても、データ ソース内のデータには影響しません。

  • 連鎖削除ディレクティブと参照制約は、デタッチ操作中は適用されません。

適用対象

こちらもご覧ください