次の方法で共有


オブジェクト コンテキストからオブジェクトをデタッチする方法 (Entity Framework)

Object Services を利用して、不要になったオブジェクトをオブジェクト コンテキストからデタッチすることができます。それには、Detach メソッドを呼び出します。これにより、使用メモリの量が削減されます。

操作を実行するために追加の処理が必要な場合は、オブジェクトのデタッチを検討する必要があります。詳細については、「オブジェクトのデタッチ (Entity Framework)」を参照してください。

このトピックの例には、Adventure Works Sales Model が使用されています。この例のコードを実行するには、あらかじめプロジェクトに AdventureWorks Sales Model を追加し、Entity Framework を使用するようにプロジェクトを構成しておく必要があります。具体的な方法については、「Entity Framework プロジェクトを手動で構成する方法」および「Entity Data Model を手動で定義する方法 (Entity Framework)」の手順を参照してください。

この例では、アプリケーションで不要になった SalesOrderDetail オブジェクトと SalesOrderHeader オブジェクトを 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 Shared Sub DetachOrders(ByVal context As ObjectContext, _
                          ByVal order As SalesOrderHeader)
    Try
        ' Detach each item from the collection.
        While order.SalesOrderDetail.Count > 0
            ' Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First())
        End While

        ' Detach the order.
        context.Detach(order)

    Catch ex As InvalidOperationException
        Console.WriteLine(ex.ToString())
    End Try
End Sub
// 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.SalesOrderDetail.Count > 0)
        {
            // Detach the first SalesOrderDetail in the collection.
            context.Detach(order.SalesOrderDetail.First());
        }

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

参照

概念

Object Services のリソースの管理 (Entity Framework)

その他のリソース

オブジェクト コンテキストの管理 (Entity Framework)
オブジェクトの使用 (Entity Framework タスク)