Konfigurieren Sie den EF Core Cache
Dieser Abschnitt konzentriert sich auf die Konfigurationen, die zur Verwendung des erforderlich sind NCache Erweiterungsmethoden in einer Entity Framework-Anwendung und erstellen Sie einen EF Core Cache. Dies erfordert die Serialisierung und Angabe von Entitäten NCache-spezifische Konfigurationen in der DbContext
Ihrer EF-Anwendungen.
Note
Diese Funktion ist auch in verfügbar NCache Professional.
NCache Bietet Benutzern außerdem die Flexibilität, den Cache zu synchronisieren, wenn Elemente aufgrund von Ablauf oder Räumung ungültig werden. Dadurch bleiben die Daten im Cache aktuell und Netzwerkzugriffe auf die Datenbank zum Abrufen abgelaufener Elemente werden reduziert.
Serialisierung von Entitäten im EFCore-Cache
Vor der Konfiguration von EF Core Cache müssen alle Entitäten in jedem Datenbankmodell zum Speichern serialisiert werden NCacheDaher müssen sie als serialisierbar gekennzeichnet sein.
[Serializable]
public partial class Customers
{
// Getters setters
}
Angeben von Cache-Konfigurationen in DbContext
So konfigurieren Sie den EF Core Cache: NCache stellt konfigurierbare Cache-Eigenschaften bereit, die in angegeben sind DbContext
dem „Vermischten Geschmack“. Seine NCacheConfiguration
Mit der Klasse können Benutzer die Eigenschaften angeben und den Logger für Ihre Anwendung konfigurieren:
Wichtig
Sie müssen konfigurieren NCache der DbContext
oder als Einstiegspunkt für die Anwendung, andernfalls wird eine Ausnahme ausgelöst, die besagt, dass die NCache Die Initialisierungskonfiguration wurde nicht bereitgestellt.
- Das folgende Codebeispiel konfiguriert NCache für die EF-Anwendung in einer erweiterten
DbContext
Klasse mitSqlServer
,DependencyType
undCacheConnectionOptions
Angabe des Cluster-Ports, des Wiederholungsintervalls und der Verbindungswiederholungen für den Cache. Die KonfigurationenCacheId
undConnString
wurden in der angegeben App.config Datei:
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);
}
}
Standardschemakonfiguration für SQL-Abhängigkeit
Datenbankabhängigkeitsabfragen unterscheiden sich geringfügig von regulären SQL-Abfragen. Daher akzeptiert der SQL Server diese Abfragen nicht als gültig. Um dieses Problem zu vermeiden, ist die dbo
muss vor dem Tabellennamen angehängt werden, in dem das Standardschema festgelegt ist dbo
. Dies kann durch Hinzufügen der folgenden Codezeile erfolgen OnModelCreating
Methode in der DbContext
Klasse:
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
modelBuilder.HasDefaultSchema("dbo"); // add this line for SQL dependency
// rest of the entity model code goes here
}
Diese generierte Abfrage kann zum Konfigurieren der Datenbankabhängigkeit verwendet werden.
Konfigurationsoptionen
Die Konfigurationsoptionen von NCacheConfiguration
sind:
Mitglied | Typ | Beschreibung |
---|---|---|
CacheId |
string |
Gibt den Namen des Caches an, der für die Bereitstellung in der Entity Framework-Anwendung verwendet werden soll. Wenn kein Cache-Name angegeben wird, wird eine Konfigurationsausnahme ausgelöst. |
DatabaseType |
DependencyType |
Enum, um den Cache über die vom Entity Framework verwendete Datenbank zu informieren. Die Werte sind:Other = 0SqlServer = 1Oracle = 2Diese Enumeration befasst sich mit der Datenungültigmachung. Wenn Daten in der Datenbank aktualisiert werden, NCache Entfernt die zwischengespeicherten Abfragen gemäß den betroffenen Entitäten, sodass bei der nächsten Abfrage neue Daten aus der Datenquelle bereitgestellt werden können, um die Verwendung veralteter Daten zu verhindern. HINWEIS: Entity Framework Core unterstützt Oracle nicht und sollte daher vermieden werden. HINWEIS: Im Falle von DependencyType festlegen als Other , wird keine Datenbankabhängigkeit erstellt.HINWEIS: Im Falle von DependencyType festlegen als SqlServer , muss ein SQL-Service-Broker auf dem SQL-Server aktiviert sein, da die Datenungültigmachung die SQL-Abhängigkeit erfordert. Die SQL-Abhängigkeit erfordert auch eine spezielle Konfigurationsänderung DbContext . |
InitParams |
CacheConnectionOptions |
Eine Klasse, die enthält kundenspezifische Parameter um den Cache mit den vom Benutzer angegebenen Konfigurationen zu initialisieren. |
IsConfigured |
bool |
Gibt an, ob DbContext ob mit überschreibenden Optionen konfiguriert wurde oder nicht. |
Versandart | Beschreibung |
---|---|
Configure |
Konfiguriert den Cache, der für die Bereitstellung in der Entity Framework-Anwendung verwendet werden soll. Dadurch wird die Konfiguration des Caches gemäß den vom Benutzer angegebenen Eigenschaften festgelegt. Es übernimmt die Cache-ID, den Datenbankabhängigkeitstyp und alle optionalen Initialisierungsparameter für den Cache. |
ConfigureLogger |
Konfiguriert Instanz(en) von Microsoft.Extensions.Logging.ILogger über ein Microsoft.Extensions.Logging.ILoggerFactory um Details zu Vorgängen vom Caching-Anbieter zu protokollieren. |
IsLoggerEnabled |
Gibt an, ob der Logger auf der angegebenen Protokollebene aktiviert wurde oder nicht. |
errorEnabled |
Ermöglicht Benutzern die Festlegung, ob sie eine Ausnahme auslösen möchten FromCache und LoadIntoCache Abfragen. |
bulkInsertChunkSize |
Dadurch wird der Großteil der Entitäten in kleinere Blöcke aufgeteilt und der Cache Block für Block aktualisiert. Standardmäßig ist die bulkInsertChunkSize ist 1000. |
Siehe auch
.NETZ: Alachisoft.NCache.EntityFrameworkCore und Alachisoft.NCache.Runtime.Caching Namensräume.