我为亚音速 2.x ActiveRecord 编写了一个 CacheUtil 类。它基于某人在旧亚音速论坛上发布的一些代码。(这来自一个在上一个论坛被删除之前被删除的论坛。这就是为什么软件论坛应该是永久的。)这里是一个缓存查找方法的例子。您可以将其调整为 ss3。还有inserts、fetchall、delete、clear等。Rob Connery当时说缓存有问题,故意把它排除在ss2之外。通过使用 HttpRuntime.Cache,我同时在 Web 应用程序和服务之间共享缓存。我相信我可以做到这一点,因为它是一个小型应用程序,始终在单个服务器上。
public static RecordBase<T> Find<T, ListType>(object primaryKeyValue)
where T: RecordBase<T>, new()
where ListType: AbstractList<T, ListType>, new()
{
string key = typeof(T).ToString();
if(HttpRuntime.Cache[key] == null)
FetchAll<T, ListType>();
if(HttpRuntime.Cache[key] != null)
{
ListType collection = (ListType)HttpRuntime.Cache[key];
foreach(T item in collection)
{
if(item.GetPrimaryKeyValue().Equals(primaryKeyValue))
return item;
}
}
return null;
}