2008-10-27 36 views
5

Làm tiêu đề. Tôi đã không tìm thấy một thông qua google, ở mức nào.Có ai biết ai đang làm việc trên một nhà cung cấp LINQ-to-Memcached?

Cập nhật: cảm ơn các liên kết từ hai câu trả lời; điều này là rất hữu ích, nhưng không phải những gì tôi đã sau - Tôi tò mò để xem liệu có thể truy vấn một IRepository được hỗ trợ bởi memcached (hoặc một số bộ nhớ cache phân phối khác), được hỗ trợ bởi một RDBMS. Tôi thực sự không có ý tưởng làm thế nào mà có thể làm việc trong thực tế; Tôi không biết nhiều về nội bộ của bộ đệm phân tán hoặc nhà cung cấp LINQ.

Tôi có thể dự tính một cái gì đó giống như bộ nhớ cache LINQ nhà cung cấp tạo khóa bộ nhớ cache dựa trên truy vấn tự động (nơi truy vấn có thể là Biểu thức> hoặc một số loại triển khai mẫu Đặc điểm kỹ thuật) và về cơ bản có thể được gộp lại giữa ứng dụng của tôi và DB của tôi. Điều đó có hữu ích không?

+0

+1 cho câu hỏi. điều này nghe giống như một dự án đáng giá. –

Trả lời

1

Nếu bạn không ngại ném NHibernate giữa chúng, bạn có thể sử dụng LINQ to NHibernate để truy vấn các đối tượng mà can be set sử dụng bộ nhớ cache memcached.

+0

Ouch! Đó là khó chịu –

+0

Nó phụ thuộc vào nếu bạn muốn sử dụng NHibernate đã hoặc không;) – wprl

+0

Tôi _do_ muốn, nhưng tragically nó không phải là một lựa chọn cho đến khi những thiếu sót của Linq2Sql có kinh nghiệm "trong cuộc sống thực". –

1

Tôi không nếu đây là những gì bạn muốn, bạn có thể kiểm tra trong số website này. Trong đó bạn có thể truy vấn Memcached cũng như truy vấn LINQ đến đối tượng.

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

Đây có phải là điều bạn muốn không?

Đây là mã nguồn

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

Tôi gặp phải một số vấn đề với LINQ cho memcached cũng. Nhưng bạn nên kiểm tra serialization của linq DBML của bạn cho dù đó là Unidirectional hay không.

bạn có thể có may mắn cho giải pháp này, đáng để thử. Đối với tôi, tôi sẽ gặp vấn đề với LINQ, nhưng đối tượng khác có thuộc tính [Serilizable] hoạt động tốt.

Các vấn đề liên quan