Entity Framework (EF) Core es la versión rediseñada y reescrita del motor de mapeo relacional de objetos de Entity Framework para .NET Core aplicaciones Es muy ligero, extensible y multiplataforma.
Sin embargo, alta transacción .NET Core aplicaciones que utilizan Rendimiento facial EF Core y cuellos de botella de escalabilidad en el nivel de la base de datos bajo cargas máximas. Esto se debe a que, aunque puede escalar linealmente el nivel de la aplicación agregando más servidores de aplicaciones, no puede agregar más servidores de bases de datos para escalarlo.
Pero, si usa un caché distribuido como NCache en tu .NET Core aplicaciones, puede eliminarlas rápidamente cuellos de botella de rendimiento y escalabilidad y manejar cargas extremas de transacciones.
Extension Methods es una característica de C# que le permite ampliar clases y tipos existentes sin crear clases derivadas. Un método de extensión es un tipo especial de método estático pero se llama como si fuera un método de instancia en la clase extendida.
NCache ha integrado sus características de almacenamiento en caché en EF Core a través de métodos de extensión. Esto hace que usar NCache desde dentro de un Aplicación EF Core Muy simple y directo. A continuación se muestra una lista de los métodos de extensión de EF Core proporcionados por NCache.
Los datos más comunes para almacenar en caché en EF Core son los datos transaccionales. Estos son los datos que cambian con frecuencia y que se crean en el tiempo de ejecución (por ejemplo, clientes, cuentas, actividades, etc.) y los almacena en caché solo por un breve período de tiempo durante el cual su aplicación los lee varias veces.
El método de extensión FromCache() le permite almacenar en caché datos transaccionales almacenando en caché el conjunto de resultados de su Consultas LINQ. Vea el ejemplo a continuación.
//Load suppliers into the cache with the expiration options
IEnumerable<Suppliers> suppliers = (from supplier in database.Suppliers
where supplier.SupplierId < 10
select supplier).FromCache(options);
Aquí, antes de ir a la base de datos para obtener estos datos, el método FromCache() verifica el caché en busca de estos datos. Si lo encuentra, lo devuelve desde el caché. De lo contrario, lo obtiene de la base de datos, primero lo almacena en caché para que esté allí la próxima vez y luego devuelve los resultados a la persona que llama.
Tiene la opción de almacenar en caché toda la colección como un elemento en el caché o dividir todas sus entidades y almacenarlas en caché por separado. El desglose es útil si también desea obtener o actualizar estas entidades individualmente. A continuación se muestra la versión asíncrona de este método.
//Load suppliers into the cache with the expiration options asynchronously
Task<IEnumerable><Suppliers> suppliersTask = (from supplier in database.Suppliers
where supplier.SupplierId < 10
select supplier).FromCacheAsync(options);
suppliersTask.Wait();
IEnumerable<Suppliers> suppliers = suppliersTask.Result.ToList();
Los datos de referencia son algo que debe almacenar en caché por completo. Esto le permite ejecutar Consultas LINQ solo en el caché y nunca vaya a la base de datos para ello. Tenga en cuenta que si no tiene todo el conjunto de datos en la memoria caché, los resultados de su consulta LINQ son incorrectos porque solo verifican la memoria caché y asumen que todo el conjunto de datos está en la memoria caché.
Con el método de extensión LoadIntoCache(), puede llenar su caché de EF Core con todos sus datos de referencia. Vea el ejemplo a continuación para llenar su caché.
//Load ALL products into the cache as reference data
IEnumerable<Products> products = (from product in database.Products
select product)
.LoadIntoCache(out string cacheKey, options);
Una vez que haya cargado el caché con todos los datos de referencia, puede ejecutar consultas LINQ en él en lugar de en la base de datos. Esto reduce la presión sobre su base de datos y mejora el rendimiento y la escalabilidad de su aplicación. Vea el ejemplo a continuación.
//Query for discontinued products from the reference data cache
IEnumerable<Products> products = (from product in database.Products
where product.Discontinued == true
select product).FromCacheOnly();
Tenga en cuenta que su caché de datos de referencia de EF Core debe contener el conjunto de datos completo (por ejemplo, Productos en este caso). De lo contrario, su método de extensión FromCacheOnly() solo devolverá lo que esté en el caché, ya que no verifica la base de datos. Y, esto puede ser incorrecto.
Cada vez que realice cambios en sus Entidades en EF Core, puede actualizar la memoria caché de EF Core con ellos obteniendo el identificador "Caché" y realizando la llamada al método de actualización adecuado. A continuación se muestra un ejemplo.
// Initialize the database context
NorthwindContext database = new NorthwindContext();
...
// Add some new entities to the database
database.Shippers.Add(shipperPandaExpress);
database.Shippers.Add(shipperTitanic);
database.SaveChanges();
Cache cache = database.GetCache();
cache.Insert(shipperPandaExpress, out cacheKey, options);
cache.Insert(shipperTitanic, out cacheKey, options);
//By obtain a Cache class handle, you can directly add, update, or remove entities from EF Core. And, then updated data shows up in your LINQ queries. This gives you a lot more control over updating entities when your modifying data yourself. Below is the interface of Cache class.
namespace Alachisoft.NCache.EntityFrameworkCore
{
public class Cache
{
public void Insert(object entity, out string cacheKey, CachingOptions options);
public void Remove(object entity);
public void Remove(string cacheKey);
public void RemoveByQueryIdentifier(Tag tag);
}
}
Entity Framework Core no viene con su marco de almacenamiento en caché (como NHibernate hace). Sin embargo, NCache ha desarrollado un marco de almacenamiento en caché muy flexible, potente y, sin embargo, muy simple para usted. Debe usarlo por las siguientes razones:
Por favor vea los detalles de todos NCache características en Comparación de ediciones página. Leer más sobre NCache y descargue una versión de prueba completa de 30 días de trabajo de NCache de los enlaces a continuación.