2008-10-27 10 views
5

Als Titel. Ich habe jedenfalls keinen über Google gefunden.Kennt jemand, dass jemand an einem LINQ-to-Memcached-Anbieter arbeitet?

Update: Danke für die Links von den beiden Antworten; Das ist sehr nützlich, aber nicht das, wonach ich gesucht habe - ich bin gespannt, ob es möglich ist, ein IR-Repository abzufragen, das von memcached (oder einem anderen verteilten Cache) gestützt von einem RDBMS unterstützt wird. Ich habe wirklich keine Ahnung, wie das in der Praxis funktionieren könnte; Ich weiß nicht viel über die Interna von verteilten Caches oder LINQ-Providern.

Ich stelle mir vielleicht etwas wie den Cache-LINQ-Provider vor, der automatisch Cacheschlüssel basierend auf der Abfrage generiert (wo Abfrage Ausdruck> oder eine Art Spezifikation Musterimplementierung sein könnte) und im Grunde zwischen meiner App und meine DB. Klingt das sinnvoll?

+0

+1 auf die Frage. Das hört sich nach einem guten Projekt an. –

Antwort

1

Wenn Sie nichts dagegen nicht NHibernate zwischen ihnen zu werfen, können Sie LINQ to NHibernate verwenden Einheiten abzufragen, die can be setmemcached als Cache verwendet werden.

+0

Autsch! Das ist böse –

+0

Es hängt davon ab, ob Sie bereits NHibernate verwenden möchten oder nicht;) – wprl

+0

Ich _do_ möchte, aber tragischerweise ist es derzeit keine Option, bis die Mängel von Linq2Sql "im wirklichen Leben" erfahren werden. –

1

Ich nicht, wenn dies das ist, was Sie wollen, können Sie in diesem website überprüfen. Dort können Sie sowohl Memcached abfragen als auch linq an object abfragen.

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"); 
    } 

Ist das was du willst? Hier

ist der Quellcode

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

begegne ich ein Problem mit Linq für auch Memcached. Aber Sie sollten die Serialisierung Ihres linq DBML überprüfen, ob es unidirektional ist oder nicht.

Sie könnten Glück für diese Lösung haben, lohnt sich auszuprobieren. Für mich habe ich ein Problem mit linq, aber andere Objekte, die [Serilizable] Attribut hat funktioniert gut.