Configurar cache do EF Core
Esta seção se concentra nas configurações necessárias para usar o NCache Métodos de extensão em um aplicativo Entity Framework e crie um EF Core Cache. Isso requer serializar entidades e especificar NCache- configurações específicas no DbContext
de seus aplicativos EF.
Note
Este recurso também está disponível em NCache Professional.
NCache também oferece aos usuários a flexibilidade de sincronizar o cache se os itens forem invalidados devido a expiração ou despejo. Isso mantém os dados atualizados no cache e reduz as viagens de rede ao banco de dados para buscar os itens expirados.
Serializando entidades no cache EFCore
Antes de configurar o EF Core Cache, todas as entidades em qualquer modelo de banco de dados precisam ser serializadas para serem armazenadas em NCache, portanto, eles devem ser marcados como serializáveis.
[Serializable]
public partial class Customers
{
// Getters setters
}
Especificando configurações de cache no DbContext
Para configurar o cache do EF Core, NCache fornece propriedades de cache configuráveis especificadas no DbContext
. O NCacheConfiguration
class permite que os usuários especifiquem as propriedades e configurem o criador de logs para seu aplicativo:
importante
Você deve configurar NCache no DbContext
ou como ponto de entrada para o aplicativo, caso contrário, lançará uma exceção informando que o NCache configuração de inicialização não foi fornecida.
- O exemplo de código a seguir configura NCache para a aplicação EF em um formato estendido
DbContext
aula comSqlServer
,DependencyType
eCacheConnectionOptions
especificando a porta do cluster, o intervalo de novas tentativas e as novas tentativas de conexão para o cache. As configuraçõesCacheId
eConnString
foram especificados no App.config arquivo:
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);
}
}
Configuração de esquema padrão para dependência de SQL
As consultas de dependência de banco de dados diferem ligeiramente das consultas SQL normais. Portanto, o SQL Server não aceita essas consultas como válidas. Para evitar esse problema, o dbo
precisa ser anexado antes do nome da tabela onde o esquema padrão está definido como dbo
. Isso pode ser feito adicionando a seguinte linha de código no arquivo OnModelCreating
método no 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
}
Esta consulta gerada pode ser usada para configurar a dependência do banco de dados.
Opções de configuração
As opções de configuração fornecidas por NCacheConfiguration
são:
Vogal | Formato | Descrição |
---|---|---|
CacheId |
string |
Especifica o nome do cache a ser usado para servir no aplicativo Entity Framework. Se nenhum nome de cache for especificado, será lançada uma exceção de configuração. |
DatabaseType |
DependencyType |
Enum para informar o cache sobre o banco de dados que está sendo usado pelo Entity Framework. Os valores são:Other = 0SqlServer = 1Oracle = 2Este enum trata da invalidação de dados. Se os dados forem atualizados no banco de dados, NCache remove as consultas armazenadas em cache de acordo com as entidades afetadas para que novos dados possam ser servidos a partir da fonte de dados na próxima consulta para evitar o uso de dados obsoletos. NOTA: Entity Framework Core não oferece suporte a Oracle, portanto deve ser evitado. NOTA: No caso de DependencyType definido como Other , a dependência do banco de dados não é criada.NOTA: No caso de DependencyType definido como SqlServer , um agente de serviços SQL deverá ser ativado no servidor SQL, pois a invalidação de dados requer a dependência de SQL. A dependência SQL também requer a alteração especial da configuração para DbContext . |
InitParams |
CacheConnectionOptions |
Uma classe que contém parâmetros personalizados para inicializar o cache com as configurações especificadas pelo usuário. |
IsConfigured |
bool |
Especifica se DbContext foi configurado com quaisquer opções de substituição ou não. |
Forma | Descrição |
---|---|
Configure |
Configura o cache a ser usado para servir no aplicativo Entity Framework. Isto define a configuração do cache de acordo com as propriedades especificadas pelo usuário. Ele recebe o ID do cache, o tipo de dependência do banco de dados e quaisquer parâmetros opcionais de inicialização do cache. |
ConfigureLogger |
Configura instância(s) de Microsoft.Extensions.Logging.ILogger via Microsoft.Extensions.Logging.ILoggerFactory para registrar detalhes de operações do provedor de cache. |
IsLoggerEnabled |
Especifica se o criador de logs foi ativado no nível de log especificado ou não. |
errorEnabled |
Permite que os usuários determinem se desejam lançar uma exceção para FromCache e LoadIntoCache consultas. |
bulkInsertChunkSize |
Isso divide a maior parte das entidades em partes menores e atualiza o cache parte por parte. Por padrão, o bulkInsertChunkSize é 1000. |
Veja também
.INTERNET: Alachisoft.NCache.EntityFrameworkCore e Alachisoft.NCache.Runtime.Cache espaços para nome.