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

转载: http://dotnet.chinaitlab.com/CSharp/519984.html

 

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 继承过来。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值