我试图让第二级缓存与实体框架4一起工作。由Jarek Kowalski(http://code.msdn.microsoft.com/EFProviderWrappers/Release/ProjectReleases.aspx?ReleaseId=4747)制作的“EF提供者包装”工作得很好,我遇到的问题一旦对表进行更新,表中的所有缓存条目都会失效。这是打算,还是我在我的实施中犯了一个错误?实体框架和EF提供者包装的第二级缓存
如果这是有意的,那么它会在有很多更新的表上完全无用。有什么办法可以解决这个问题吗?
这是我的执行将指令界面,使用ScaleOut StateServer的高速缓存:
public class SossCache : ICache
{
private readonly NamedCache SossCache;
public SossCache(string cacheName)
{
this.SossCache = CacheFactory.GetCache(cacheName);
}
public bool GetItem(string key, out object value)
{
value = this.SossCache.Get(key);
return value != null;
}
public void PutItem(string key, object value, IEnumerable<string> dependentEntitySets, TimeSpan slidingExpiration, DateTime absoluteExpiration)
{
bool isAbsoluteTimeout = slidingExpiration == TimeSpan.Zero;
TimeSpan timeout = isAbsoluteTimeout ? absoluteExpiration.Subtract(DateTime.Now) : slidingExpiration;
CreatePolicy createPolicy = new CreatePolicy(timeout, isAbsoluteTimeout, ObjectPreemptionPriority.Normal, dependentEntitySets.ToArray(), true);
this.SossCache.Insert(key, value, createPolicy, true, false);
}
public void InvalidateItem(string key)
{
this.SossCache.Remove(key);
}
public void InvalidateSets(IEnumerable<string> entitySets)
{
foreach (string key in entitySets)
InvalidateItem(key);
}
}