Esiste un conflitto durante l'utilizzo della memorizzazione dei dati nella cache e del caricamento lento?

StackOverflow https://stackoverflow.com/questions/487669

  •  20-08-2019
  •  | 
  •  

Domanda

Se intendo utilizzare la memorizzazione nella cache dei dati, devo preoccuparmi dei conflitti quando utilizzo anche il caricamento posticipato? Sembra che con linq sto perdendo il controllo dei miei dati.

È stato utile?

Soluzione

Sia LinqToSql che EntityFramework forniscono entrambe le funzionalità (caricamento posticipato e memorizzazione nella cache dei dati).

Ad esempio, se inizialmente carichi un cliente, quel cliente verrà memorizzato nella cache e se lo chiedi di nuovo otterrai la stessa istanza.

Se non carichi gli ordini di un cliente durante quel caricamento iniziale, la proprietà Orders dell'istanza del cliente sarà in uno stato non caricato. Quando carichi tali ordini, le istanze dell'Ordine saranno disponibili tramite quella proprietà.

  • LinqToSql caricherà la proprietà al primo utilizzo.
  • EntityFramework caricherà la proprietà quando viene richiesto (utilizzando il metodo Load).

In entrambe le tecnologie, il contesto è la cosa che fa la memorizzazione nella cache ... quindi se usi più di un'istanza di contesto, potresti osservare diverse istanze del cliente che rappresentano davvero lo stesso cliente.


Rispondere alle tue domande nei commenti. Parlerò di LinqToSql, ma questa roba dovrebbe funzionare anche in EntityFramework.

  

se interrompo il caricamento posticipato, accetto che la memorizzazione dei dati nella cache continuerà a funzionare?

Sì, funzionerà. Tuttavia, non sono totalmente indipendenti.

  

il flush della cache dei dati dipende dal fatto che ci siano cambiamenti in datatable eo tempo?

Non è possibile scaricare o ripristinare la cache. Se si desidera una cache nuova, la cosa da fare è creare un nuovo DataContext. Ogni istanza di DataContext ha la propria cache.

  • Esiste un modo per estrarre l'aggiornamento della cache con le modifiche nel database aka - Aggiorna .
  • Non è possibile inoltrare le modifiche dal database alla cache.
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top