Skip to content

ShareCacheStruct<T> after RemoveCache,can not load Cache value from db or redis again #19

@Jesse1205

Description

@Jesse1205

Change the ShareCacheStruct LoadItemFactory function can solve my problem as below

`protected override bool LoadItemFactory(string key, bool isReplace)
{
//string redisKey = CreateRedisKey(key);
//var schema = SchemaTable();
//if (schema != null && schema.AccessLevel == AccessLevel.ReadWrite)
//{
// int periodTime = schema.PeriodTime;
// List dataList;
// if (DataContainer.TryLoadHistory(redisKey, out dataList))
// {
// InitCache(dataList, periodTime);
// return true;
// }
// else
// {
// return false;
// }
//}
string redisKey = CreateRedisKey(key);
TransReceiveParam receiveParam = new TransReceiveParam(redisKey);
receiveParam.Schema = SchemaTable();
int periodTime = receiveParam.Schema.PeriodTime;
int maxCount = receiveParam.Schema.Capacity;

        var provider = Data.DbConnectionProvider.CreateDbProvider(receiveParam.Schema);
        if (receiveParam.Schema.StorageType.HasFlag(StorageType.ReadOnlyDB) ||
            receiveParam.Schema.StorageType.HasFlag(StorageType.ReadWriteDB))
        {
            if (provider == null)
            {
                TraceLog.WriteError("Not found db connection of {0} entity.", receiveParam.Schema.EntityName);
                return false;
            }
            var filter = new DbDataFilter(maxCount);
            if (!string.IsNullOrEmpty(key))
            {
                string[] keyValues = key.Split('-');
                for (int i = 0; i < receiveParam.Schema.Keys.Length; i++)
                {
                    filter.Condition = provider.FormatFilterParam(receiveParam.Schema.Keys[i]);
                    filter.Parameters.Add(receiveParam.Schema.Keys[i], keyValues[i]);
                }
            }
            receiveParam.DbFilter = filter;
        }

        List<T> dataList;
        if (DataContainer.TryReceiveData(receiveParam, out dataList))
        {
            InitCache(dataList, periodTime, isReplace);
            return true;
        }
        else
        {
            return false;
        }
    }`

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions