-
Notifications
You must be signed in to change notification settings - Fork 570
Description
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;
}
}`