Procedura: disconnettere oggetti da un contesto dell'oggetto (Entity Framework)
È possibile disconnettere oggetti dal contesto di un oggetto quando non sono più necessari. A tale scopo, chiamare il metodo Detach. Questa operazione consente di ridurre la quantità di memoria utilizzata.
I vantaggi della disconnessione di oggetti devono essere valutati rispetto ai requisiti aggiuntivi di elaborazione necessari per eseguire l'operazione. Per ulteriori informazioni, vedere Connessione e disconnessione di oggetti (Entity Framework).
L'esempio incluso in questo argomento è basato sul modello Sales di AdventureWorks. Per eseguire il codice incluso in questo esempio, è necessario avere già aggiunto il modello Sales di AdventureWorks al progetto e avere configurato il progetto per l'utilizzo di Entity Framework. A tale scopo, completare le procedure descritte in Procedura: configurare manualmente un progetto di Entity Framework e Procedura: definire manualmente i file di modello e di mapping (Entity Framework).
Esempio
In questo esempio viene illustrato come scollegare gli oggetti SalesOrderDetail e SalesOrderHeader da un oggetto ObjectContext quando non sono più necessari per l'applicazione.
' 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.SalesOrderDetails.Count > 0
' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetails.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.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());
}
}
Vedere anche
Concetti
Gestione di connessioni e transazioni (Entity Framework)
Utilizzo di oggetti (Entity Framework)