protected static CacheManager<Company> companyCache =
new CacheManager<Company>(new SmsDatabaseCache<Company>(), key =>
{
return SmsDatabase.Instance.Context.Company
.Where(c => c.ShortNumber == (string)key).SingleOrDefault();
});
public class SmsDatabaseCache<TData> : ICache<TData>
{
Dictionary<object, TData> cache = new Dictionary<object, TData>();
public SmsDatabaseCache()
{
SmsDatabase.Instance.PreDisposing += (s, e) => cache.Clear();
}
public TData Get(object key) => cache[key];
public void Set(object key, TData data) => cache[key] = data;
}
Context 釋放時自動清空快取,避免資料不一致。