ObjectContext.Detach(Object) Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Rimuove l'oggetto dal contesto dell'oggetto.
public:
void Detach(System::Object ^ entity);
public void Detach (object entity);
member this.Detach : obj -> unit
Public Sub Detach (entity As Object)
Parametri
- entity
- Object
Oggetto da disconnettere. Viene rimosso solo entity
. Se sono presenti oggetti correlati che vengono rilevati dallo stesso oggetto ObjectStateManager, tali oggetti non verranno disconnessi automaticamente.
Eccezioni
L'elemento entity
è null
.
entity
non è associato all'oggetto ObjectContext, ad esempio è stato appena creato e non è stato ancora associato a un contesto oppure è stato ottenuto mediante un altro contesto o è già stato disconnesso.
Esempio
// 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());
}
}
Commenti
Rimuove l'oggetto da ObjectStateManager. In questo modo vengono disabilitati il rilevamento delle modifiche e la risoluzione di identità per l'oggetto. Per altre informazioni, vedere Collegamento e scollegamento di oggetti.
Dopo la chiamata al metodo Detach, il sistema non manterrà più i riferimenti che puntano a questo oggetto che potrà essere raccolto dal Garbage Collector.
Nota
La procedura di Garbage Collection può verificarsi solo se il codice utente non contiene alcun riferimento all'oggetto disconnesso.
Le considerazioni seguenti riguardano la disconnessione di oggetti:
Detach influisce solo sull'oggetto specifico passato al metodo. Se l'oggetto che viene disconnesso ha oggetti correlati nel contesto dell'oggetto, tali oggetti non vengono disconnessi.
La disconnessione degli oggetti non influisce sui dati presenti nell'origine dati.
Le direttive di eliminazione a catena e i vincoli referenziali non vengono applicati durante un'operazione di disconnessione.
Per altre informazioni, vedere Collegamento e scollegamento di oggetti.