Pregunta

Estoy usando el patrón de repositorio L2S en mi aplicación web ASP.NET 3.5. Pero no estoy muy satisfecho con la actuación como experimentada en Live. Busqué en Google y me encontré con el almacenamiento en caché de SQL usando la clase SQLCachedependency. Pero no tengo ningún tutorial o enlace que explique cómo usarlo en mi escenario.

Así que ayúdame chicos ... cualquier ayuda o orientación será muy apreciada.

Utilice algunos códigos de muestra o referencias en línea ...

Gracias de antemano

Actualización: mi repositorio

public interface IRepository<T> where T : class
{
    T GetById(int id);
    IQueryable<T> GetAll();
    void SaveOrUpdate(T entity);
    void DeleteOnSubmit(T entity);
}
¿Fue útil?

Solución

A veces, Linq a SQL hace consultas de maneras inesperadas. ¿Verificó cómo se traducen sus consultas Linq a SQL? Use SQL Server Profiler (disponible en el menú Herramientas en SQL Management Server) para verificar las consultas generadas. Escribí información al respecto aquí.

Una vez que sepa que tiene buenas consultas generadas, debe buscar si la ejecución de alguien de ellas es un cuello de botella de rendimiento. El Profiler también puede ayudar aquí. Si algunas consultas se están ejecutando lentamente, intente agregar índices apropiados.

A menos que tenga un sitio de muy alto volumen, estos pasos deberían darle un buen rendimiento sin tener que hacer almacenamiento en caché.

Otros consejos

No describiste cómo estás usando LINQ a SQL con tu repositorio. Básicamente, ¿está reutilizando el mismo DataContext para todos los repositorios creados durante una sola solicitud, o cada repositorio obtiene su propia instancia de DataContext? Si es lo último, pierde la caquiabilidad interna del DataContext.

Otra área donde se puede mejorar el rendimiento es si tiene consultas de uso frecuente que contiene muchas capas de uniones (no solo una sola tabla seleccionada). Usando un Compilado Aquí acelerará las cosas drásticamente. Las cuencas compiladas solo deben generarse la primera vez que se usan, de lo contrario, una consulta recompilada cada vez que se usa.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top