.Net 缓存代理类 的初步考虑.

EntityData为实体数据类
我们这里将实体数据进行缓存,缓存方法是
//从Web.Config取得对缓存过期的设置
 ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();
 //获得缓冲对象
   CacheManager cm=CacheManager.GetCacheManager();
存储
cm.Add(EntityKeyCreator.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);

此类可以做实体代理类
using Microsoft.ApplicationBlocks.Cache;
/// <summary>
  /// 缓冲实体
  /// </summary>
  /// <param name="entity">实体数据</param>
  public static void CacheEntity(EntityData entity)
  {
   if(entity.IsEmpty)
    return;
   ICacheItemExpiration[] ice=ExpireTerm.GetExpirationPolicy();
   //获得缓冲对象
   CacheManager cm=CacheManager.GetCacheManager();
   //存储

   cm.Add(ExpireTerm.CreateKey(entity),entity,ice,CacheItemPriority.Normal,null);

  }

ExpireTerm.class
using Microsoft.ApplicationBlocks.Cache;

internal static ICacheItemExpiration[] GetExpirationPolicy()
  {
   if(Object.Equals(configSetting,null))
   {
    configSetting = (ICacheItemExpiration[])ConfigurationSettings.GetConfig("TopCoolExpireTerm");
   }
   return configSetting;
  }

 internal static string CreateKey(EntityData entity)
  {
   DataSet ds = new  DataSet();
   DataColumn[] keyColumns;
   if(entity.Tables.Contains(entity.MainTableName))
    keyColumns = entity.Tables[entity.MainTableName].PrimaryKey;
   else
    keyColumns = entity.CurrentTable.PrimaryKey;//
   StringBuilder sb = new StringBuilder(entity.EntityTypeName);
   //用:分隔实体类列名
   for(int i=0;i<keyColumns.Length;i++)
   {
    sb.Append(":");
    sb.Append(entity[keyColumns[i].ColumnName].ToString());
   }
   return sb.ToString();
  }


注意:EntityData从DataSet 继承过来.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值