Disconnessione di oggetti (Entity Framework)
Entity Framework supporta scenari che richiedono un contesto dell'oggetto con esecuzione prolungata. È ad esempio possibile trovare uno scenario di questo tipo in un'applicazione Windows in cui gli oggetti dati sono associati a un controllo visuale ed è necessario rendere persistenti gli oggetti quando i dati sono visualizzati nel controllo. Quando viene eseguita una query in un contesto dell'oggetto, gli oggetti restituiti vengono automaticamente connessi al contesto. Questo significa che l'esecuzione di query ripetute nello stesso contesto dell'oggetto comporta un aumento dei requisiti di memoria del contesto dell'oggetto. Questo non vale nel caso in cui una query venga eseguita con un valore di MergeOption uguale a NoTracking. In questo caso, gli oggetti non vengono connessi al contesto dell'oggetto.
Object Services consente di disconnettere gli oggetti da un contesto dell'oggetto. Quando gli oggetti non sono più necessari, possono essere disconnessi. Il contesto dell'oggetto non fa riferimento agli oggetti disconnessi e le relative risorse possono essere recuperate da .NET Framework.
Per disconnettere gli oggetti, è possibile chiamare il metodo Detach e passare un riferimento all'oggetto che viene disconnesso, come nell'esempio seguente:
' Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First())
// Detach the first SalesOrderDetail in the collection.
context.Detach(order.SalesOrderDetail.First());
Le considerazioni seguenti riguardano la disconnessione di oggetti:
Detach ha effetto 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.
Le informazioni sulle relazioni non vengono conservate per un oggetto disconnesso.
Le informazioni sullo stato dell'oggetto non vengono conservate quando un oggetto viene disconnesso. Sono inclusi i valori di chiave temporanea e le modifiche rilevate.
La disconnessione degli oggetti non influisce sui dati dell'origine dati.
Le direttive di eliminazione a catena e i vincoli referenziali non vengono applicati durante un'operazione di disconnessione.
I vantaggi della disconnessione di oggetti devono essere valutati rispetto ai requisiti aggiuntivi di elaborazione necessari per eseguire l'operazione. Quando l'ambito dei dati utente viene modificato, ad esempio visualizzando un nuovo modulo con un set di dati diverso, è consigliabile creare una nuova istanza di ObjectContext, anziché disconnettere solo gli oggetti da un oggetto ObjectContext esistente.
Per ulteriori informazioni, vedere Procedura: disconnettere oggetti da un contesto dell'oggetto (Entity Framework).
Vedere anche
Concetti
Connessione di oggetti (Entity Framework)