2008-10-27 22 views
5

Como título. No encontré uno a través de google, en cualquier caso.¿Alguien sabe de alguien que trabaje en un proveedor LINQ-a-Memcached?

Actualización: gracias por los enlaces de las dos respuestas; esto es muy útil, pero no es lo que buscaba. Tengo curiosidad por ver si es posible consultar un IRepository respaldado por memcached (o algún otro caché distribuido), respaldado por un RDBMS. Realmente no tengo idea de cómo podría funcionar en la práctica; No sé mucho sobre el funcionamiento interno de los cachés distribuidos o los proveedores de LINQ.

Estoy imaginando algo así como el proveedor de caché LINQ generando claves de caché basadas en la consulta automáticamente (donde la consulta podría ser Expression> o algún tipo de implementación de patrón de especificación), y básicamente pueden ser reducidas entre mi aplicación y mi DB. Suena útil?

+0

+1 a la pregunta. esto suena como un proyecto que vale la pena. –

Respuesta

1

Si no le importa tirar NHibernate entre ellos, se puede utilizar para consultar LINQ to NHibernate entidades que utilizan can be set a memcached como su caché.

+0

¡Ay! Eso es desagradable –

+0

Depende de si quiere o no usar NHibernate;) – wprl

+0

Yo quiero, pero trágicamente no es actualmente una opción hasta que las deficiencias de Linq2Sql se experimenten "en la vida real". –

1

Yo no si esto es lo que quieres, puedes consultar este website. Allí puede consultar Memcached así como consultar linq a object.

public static IEnumerable<User> GetAllUsers() 
    { 
     // Retrieve from cache if it exists, otherwise run the query 
     return (from u in ctx.Users select u).CachedQuery("allusers"); 
    } 

¿Esto es lo que quieres?

Aquí está el código fuente

public static IEnumerable<T> CachedQuery<T> 
     (this IQueryable<T> query, string key) where T : class 
{ 
    if (cache.KeyExists(key)) 
    { 
     return (IEnumerable<T>)cache.Get(key); 
    } 
    else 
    { 
     IEnumerable<T> items = query.ToList(); 
     cache.Set(key, items); 
     return items; 
    } 
} 
0

Tengo algún problema con linq para memcached también. Pero debería verificar la serialización de su linq DBML ya sea unidireccional o no.

puede que tenga suerte para esta solución, vale la pena probarla. Para mí, tengo problemas con linq, pero otro objeto que tiene el atributo [Serilizable] funciona bien.

Cuestiones relacionadas