2011-12-16 30 views
1

我无法将匿名类的List <>添加到缓存中。Azure appfabric缓存,从Linq到SQL的匿名类的序列化问题

var cache = new DataCacheFactory().GetCache("default"); 
var parts = somethingIQueryable.Select(i => new { i.s1, i.s2 }); 
cache.Put("somekey", parts.ToList(), TimeSpan.FromMinutes(2)); 

这引发了序列化异常。但是它的工作原理,如果我把数据放到一类这样的:

public class A { public string s1, public string s2 }  

var cache = new DataCacheFactory().GetCache("default"); 
var parts = somethingIQueryable.Select(i => new A { s1 = i.s1, s2 = i.s2 }); 
cache.Put("somekey", parts.ToList(), TimeSpan.FromMinutes(2)); 

我宁愿没有,虽然定义数据进入高速缓存的一点一滴类,不知道是否有一种方法可以让第一个例子工作?

回答

3

您将无法序列化匿名类型并将它们存储在缓存中,不幸的是,需要创建List<A>并将其存储。

这将是因为没有什么可以比较匿名类型和序列化和反序列化。简而言之,它无法知道匿名类型是什么,因为正如其名称所暗示的那样,它是匿名的。

+0

Booo。 ASP.Net缓存可以很好地处理它,但我想这意味着它将对象本身存储在内存中而无需序列化或其他东西。 – Toodleey 2011-12-16 13:32:07