Configurare EF Core Cache
Questa sezione si concentra sulle configurazioni richieste per utilizzare il NCache Metodi di estensione in un'applicazione Entity Framework e creare una cache EF Core. Ciò richiede la serializzazione delle entità e la specificazione NCache-configurazioni specifiche nel DbContext
delle tue applicazioni EF.
Note:
Questa funzionalità è disponibile anche in NCache Professional.
NCache fornisce inoltre agli utenti la flessibilità di sincronizzare la cache se gli elementi vengono invalidati a causa di scadenza o sfratto. Ciò mantiene i dati aggiornati nella cache e riduce i viaggi di rete verso il database per recuperare gli elementi scaduti.
Serializzazione di entità nella cache EFCore
Prima di configurare EF Core Cache, tutte le entità in qualsiasi modello di database devono essere serializzate per essere archiviate NCache, pertanto, devono essere contrassegnati come serializzabili.
[Serializable]
public partial class Customers
{
// Getters setters
}
Specificare le configurazioni della cache in DbContext
Per configurare EF Core Cache, NCache fornisce le proprietà della cache configurabili specificate nel file DbContext
. NCacheConfiguration
La classe consente agli utenti di specificare le proprietà e configurare il logger per la tua applicazione:
Consigli
È necessario configurare NCache nel DbContext
o come punto di ingresso per l'applicazione, altrimenti genererà un'eccezione in cui si afferma che the NCache configurazione di inizializzazione non è stata fornita.
- Viene configurato l'esempio di codice seguente NCache per l'applicazione EF in modo esteso
DbContext
classe conSqlServer
,DependencyType
eCacheConnectionOptions
specificando la porta del cluster, l'intervallo tra i tentativi e i tentativi di connessione per la cache. Le configurazioniCacheId
edConnString
sono stati specificati nel App.config file:
public partial class NorthwindContext : DbContext
{
...
protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
{
// Parameters specified in App.config
string cacheId = ConfigurationManager.AppSettings["CacheId"];
string connString = ConfigurationManager.AppSettings["ConnString"];
bool errorEnabled = ConfigurationManager.AppSettings["ErrorEnabled"];
int bulkInsertChunkSize = ConfigurationManager.AppSettings["BulkInsertChunkSize"];
// Configure cache with connection retries and security
var options = new CacheConnectionOptions();
options.RetryInterval = 3;
options.ConnectionRetries = 2;
options.Port = 7801;
// Configure cache with security
options.UserCredentials.UserID = "john_smith";
options.UserCredentials.Password = "12345";
NCacheConfiguration.Configure(cacheId, DependencyType.SQLServer, errorEnabled, bulkInsertChunkSize, options);
optionsBuilder.UseSqlServer(connString);
}
}
Configurazione dello schema predefinita per la dipendenza SQL
Le query sulle dipendenze del database differiscono leggermente dalle normali query SQL. Pertanto, SQL Server non accetta queste query come valide. Per evitare questo problema, il dbo
deve essere aggiunto prima del nome della tabella su cui è impostato lo schema predefinito dbo
. Questo può essere fatto aggiungendo la seguente riga di codice nel file OnModelCreating
metodo in DbContext
classe:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("dbo"); // add this line for SQL dependency
// rest of the entity model code goes here
}
Questa query generata può essere utilizzata per configurare la dipendenza del database.
Opzioni di configurazione
Le opzioni di configurazione fornite da NCacheConfiguration
siamo:
Member | Tipologia | Descrizione |
---|---|---|
CacheId |
string |
Specifica il nome della cache da utilizzare per la fornitura nell'applicazione Entity Framework. Se non viene specificato alcun nome cache, viene generata un'eccezione di configurazione. |
DatabaseType |
DependencyType |
Enum per informare la cache sul database utilizzato da Entity Framework. I valori sono:Other = 0SqlServer = 1Oracle = 2Questo enum si occupa dell'invalidazione dei dati. Se i dati vengono aggiornati nel database, NCache rimuove le query memorizzate nella cache in base alle entità interessate in modo che i nuovi dati possano essere forniti dall'origine dati nella query successiva per impedire l'utilizzo di dati non aggiornati. NOTA: Entity Framework Core non supporta Oracle, quindi dovrebbe essere evitato. NOTA: In caso di DependencyType impostato come Other , la dipendenza dal database non è stata creata.NOTA: In caso di DependencyType impostato come SqlServer , è necessario abilitare un broker di servizi SQL sul server SQL poiché l'invalidazione dei dati richiede la dipendenza SQL. La dipendenza SQL richiede anche la modifica speciale della configurazione a DbContext . |
InitParams |
CacheConnectionOptions |
Una classe che contiene parametri personalizzati per inizializzare la cache con le configurazioni specificate dall'utente. |
IsConfigured |
bool |
Specifica se DbContext è stato configurato con eventuali opzioni di override o meno. |
metodo | Descrizione |
---|---|
Configure |
Configura la cache da utilizzare per la fornitura nell'applicazione Entity Framework. Imposta la configurazione della cache in base alle proprietà specificate dall'utente. Accetta l'ID della cache, il tipo di dipendenza del database e tutti i parametri di inizializzazione facoltativi per la cache. |
ConfigureLogger |
Configura le istanze di Microsoft.Extensions.Logging.ILogger tramite un Microsoft.Extensions.Logging.ILoggerFactory per registrare i dettagli delle operazioni dal provider di memorizzazione nella cache. |
IsLoggerEnabled |
Specifica se il logger è stato abilitato al livello di registro specificato o meno. |
errorEnabled |
Consente agli utenti di determinare se desiderano generare un'eccezione per FromCache ed LoadIntoCache interrogazioni. |
bulkInsertChunkSize |
Questo divide la maggior parte delle entità in blocchi più piccoli e aggiorna la cache pezzo per pezzo. Per impostazione predefinita, il bulkInsertChunkSize è 1000. |
Vedere anche
.NETTO: Alachisoft.NCache.EntityFrameworkCore ed Alachisoft.NCache.Memorizzazione.della.cache spazi dei nomi.