InvalidCastException while getting object out of the cache ----------------------------------------------------------
Key: IBATISNET-221 URL: https://issues.apache.org/jira/browse/IBATISNET-221 Project: iBatis for .NET Issue Type: Bug Components: DataMapper Environment: IBatis.net SVN, revision 527493, .Net 2.0 Reporter: Rogelio J. Baucells Priority: Critical There is a problem in the implementation of CachingStatement::ExecuteQueryForObject for .Net2.0. The following scenario triggers the InvalidCastException: - Create a <ResultMap>, <procedure>, <parameterMap> and <cacheModel> for a select statement. - Invoke the statement with parameters that does not return any results - Invoke the same statement again The first invocation will store a NULL_OBJECT in the cache for this key (CacheModel::this[CacheKey key]), the second statement will retrieve the NULL_OBJECT from the cache and will cause the InvalidCastException at: obj = (T)this.Statement.CacheModel[cacheKey]; Also the next statement will never be TRUE since obj is of type T: if ((object)obj == CacheModel.NULL_OBJECT) The solution for this problem would be declaring obj as object and casting to T at the time of returning from the method, something like: object obj = null; ... return (T)obj; -- This message is automatically generated by JIRA. - You can reply to this email to add a comment to the issue online.