ibatis.net的缓存问题
最近的项目中使用了ibatis.net,感觉挺好用的,开发效率也大幅度提高。
但是,在设置缓存的时候,出现了问题,麻烦各位大虾给俺看看。
我使用的是SqlMapper1.6.1,查看source发现RequestScope类每实例化一个对象后,其内部的ID就要加1,
导致每次Cachekey都不一样,最后就导致cache没有发挥相应的作用,反而浪费了内存。
下面是我的修改方法:
//cacheKey.Update(request);
CachingStatement
private CacheKey GetCacheKey(RequestScope request)
{
CacheKey cacheKey = new CacheKey();
int count = request.IDbCommand.Parameters.Count;
for (int i = 0; i < count; i++)
{
IDataParameter dataParameter = (IDataParameter)request.IDbCommand.Parameters[i];
if (dataParameter.Value != null)
{
cacheKey.Update( dataParameter.Value );
}
}
cacheKey.Update(_mappedStatement.Id);
cacheKey.Update(_mappedStatement.SqlMap.DataSource.ConnectionString);
cacheKey.Update(request.IDbCommand.CommandText);
CacheModel cacheModel = _mappedStatement.Statement.CacheModel;
if (!cacheModel.IsReadOnly && !cacheModel.IsSerializable)
{
//cacheKey.Update(request);
}
return cacheKey;
}
不知道各位有没有好的办法?