Rilevamento delle modifiche e risoluzione di identità (Entity Framework)
Un oggetto ObjectQuery aggiunge i nuovi oggetti restituiti dalla query alla cache degli oggetti gestita da ObjectStateManager. Anche il metodo Attach su ObjectContext e i metodi Load su EntityReference e EntityCollection consentono di aggiungere oggetti alla cache degli oggetti. È disponibile un oggetto ObjectStateManager per ogni contesto dell'oggetto. All'interno di un contesto dell'oggetto gli oggetti possono essere aggiunti, modificati ed eliminati indipendentemente dai dati nell'origine dati. Quando più query o operazioni di caricamento nell'ambito di un singolo contesto dell'oggetto restituiscono insiemi di oggetti che contengono duplicati, in Object Services viene mantenuta solo un'unica istanza di ogni oggetto con una chiave di entità specifica nella cache. Per impostazione predefinita, le query restituiscono solo oggetti che non sono già presenti nella cache. Questo significa che le modifiche agli oggetti che si trovano già nella cache non vengono sovrascritte. Questo comportamento viene controllato specificando un valore MergeOption per le query e le operazioni di caricamento. Il valore predefinito è AppendOnly. Questo valore consente di caricare solo gli oggetti che non sono già presenti nella cache degli oggetti. Questo significa che gli oggetti esistenti non vengono sovrascritti. Un'altra modalità per impedire che le modifiche nella cache degli oggetti vengano sovrascritte dagli aggiornamenti dal database consiste nello specificare PreserveChanges. Questa modalità viene spesso utilizzata per risolvere eccezioni di concorrenza ottimistica mantenendo le modifiche nel contesto locale. Per ulteriori informazioni, vedere Salvataggio delle modifiche e gestione della concorrenza (Entity Framework). Quando si specifica OverwriteChanges, gli oggetti nella cache vengono sostituiti dalla versione più recente degli oggetti materializzati dal database, anche se a tali oggetti sono già state apportate modifiche.