Configurer le cache principal EF
Cette section se concentre sur les configurations requises pour utiliser le NCache Méthodes d’extension dans une application Entity Framework et créez un cache EF Core. Cela nécessite de sérialiser les entités et de spécifier NCache-configurations spécifiques dans le DbContext
de vos applications EF.
Notes
Cette fonctionnalité est également disponible dans NCache Professional.
NCache offre également aux utilisateurs la possibilité de synchroniser le cache si des éléments sont invalidés en raison d'une expiration ou d'une expulsion. Cela maintient les données à jour dans le cache et réduit les déplacements réseau vers la base de données pour récupérer les éléments expirés.
Sérialisation des entités dans le cache EFCore
Avant de configurer EF Core Cache, toutes les entités de n'importe quel modèle de base de données doivent être sérialisées pour être stockées dans NCache, ils doivent donc être marqués comme sérialisables.
[Serializable]
public partial class Customers
{
// Getters setters
}
Spécification des configurations de cache dans DbContext
Pour configurer EF Core Cache, NCache fournit des propriétés de cache configurables spécifiées dans le DbContext
L’ NCacheConfiguration
La classe permet aux utilisateurs de spécifier les propriétés et de configurer le logger pour votre application :
Important
Vous devez configurer NCache dans les DbContext
ou comme point d'entrée pour l'application, sinon, il lèvera une exception indiquant que le NCache la configuration d'initialisation n'a pas été fournie.
- L'exemple de code suivant configure NCache pour l'application EF dans une version étendue
DbContext
classe avecSqlServer
,DependencyType
et laCacheConnectionOptions
en spécifiant le port du cluster, l'intervalle entre les tentatives et les tentatives de connexion pour le cache. Les configurationsCacheId
ainsi que leConnString
ont été précisées dans le App.config fichier:
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);
}
}
Configuration de schéma par défaut pour la dépendance SQL
Les requêtes de dépendance de base de données diffèrent légèrement des requêtes SQL classiques. Par conséquent, SQL Server n’accepte pas ces requêtes comme valides. Pour éviter ce problème, le dbo
doit être ajouté avant le nom de la table où le schéma par défaut est défini comme dbo
. Cela peut être fait en ajoutant la ligne de code suivante dans le OnModelCreating
méthode dans le 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
}
Cette requête générée peut être utilisée pour configurer la dépendance de la base de données.
Options de configuration
Les options de configuration fournies par NCacheConfiguration
sont:
Membre | Type | Description |
---|---|---|
CacheId |
string |
Spécifie le nom du cache à utiliser pour le service dans l'application Entity Framework. Si aucun nom de cache n'est spécifié, une exception de configuration est levée. |
DatabaseType |
DependencyType |
Enum pour informer le cache de la base de données utilisée par Entity Framework. Les valeurs sont :Other = 0SqlServer = 1Oracle = 2Cette énumération traite de l'invalidation des données. Si les données sont mises à jour dans la base de données, NCache supprime les requêtes mises en cache selon les entités concernées afin que de nouvelles données puissent être servies à partir de la source de données lors de la requête suivante afin d'éviter l'utilisation de données obsolètes. REMARQUE: Entity Framework Core ne prend pas en charge Oracle, il doit donc être évité. REMARQUE: Dans le cas de DependencyType définir comme Other , la dépendance de la base de données n'est pas créée.REMARQUE: Dans le cas de DependencyType définir comme SqlServer , un courtier de services SQL doit être activé sur le serveur SQL car l'invalidation des données nécessite la dépendance SQL. La dépendance SQL nécessite également un changement de configuration spécial pour DbContext . |
InitParams |
CacheConnectionOptions |
Une classe qui contient paramètres personnalisés pour initialiser le cache avec les configurations spécifiées par l'utilisateur. |
IsConfigured |
bool |
Spécifie si DbContext a été configuré avec des options prioritaires ou non. |
Method | Description |
---|---|
Configure |
Configure le cache à utiliser pour le service dans l'application Entity Framework. Ceci définit la configuration du cache en fonction des propriétés spécifiées par l'utilisateur. Il prend en compte l'ID du cache, le type de dépendance de la base de données et tous les paramètres d'initialisation facultatifs du cache. |
ConfigureLogger |
Configure les instances de Microsoft.Extensions.Logging.ILogger la vie Microsoft.Extensions.Logging.ILoggerFactory pour enregistrer les détails des opérations du fournisseur de mise en cache. |
IsLoggerEnabled |
Spécifie si l'enregistreur a été activé au niveau de journalisation spécifié ou non. |
errorEnabled |
Permet aux utilisateurs de déterminer s'ils souhaitent lever une exception pour FromCache ainsi que le LoadIntoCache requêtes. |
bulkInsertChunkSize |
Cela divise la majeure partie des entités en morceaux plus petits et met à jour le cache morceau par morceau. Par défaut, le bulkInsertChunkSize est 1000. |
Voir aussi
.RAPPORTER: Alachisoft.NCache.EntityFrameworkCore ainsi que le Alachisoft.NCache.Runtime.Caching espaces de noms.