You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@ibatis.apache.org by gb...@apache.org on 2006/05/19 19:56:31 UTC

svn commit: r407864 - in /ibatis/trunk/cs/mapper: IBatisNet.Common/Utilities/DBHelperParameterCache.cs IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs IBatisNet.DataMapper/DataExchange/DotNetObjectDataExchange.cs

Author: gbayon
Date: Fri May 19 10:56:31 2006
New Revision: 407864

URL: http://svn.apache.org/viewvc?rev=407864&view=rev
Log:
- Fix for DbHelperParameterCache

Modified:
    ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/DBHelperParameterCache.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs
    ibatis/trunk/cs/mapper/IBatisNet.DataMapper/DataExchange/DotNetObjectDataExchange.cs

Modified: ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/DBHelperParameterCache.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/DBHelperParameterCache.cs?rev=407864&r1=407863&r2=407864&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/DBHelperParameterCache.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.Common/Utilities/DBHelperParameterCache.cs Fri May 19 10:56:31 2006
@@ -2,7 +2,7 @@
 #region Apache Notice
 /*****************************************************************************
  * $Header: $
- * $Revision: $
+ * $Revision$
  * $Date$
  * 
  * iBATIS.NET Data Mapper
@@ -58,22 +58,34 @@
 		/// <returns></returns>
 		private static IDataParameter[] DiscoverSpParameterSet(IDalSession session, string spName, bool includeReturnValueParameter)
 		{
-			return InternalDiscoverSpParameterSet(session.DataSource.DbProvider, session.Connection, spName, includeReturnValueParameter);	
+			return InternalDiscoverSpParameterSet(
+                session.DataSource.DbProvider, 
+                session.Connection, 
+                session.Transaction,
+                spName, 
+                includeReturnValueParameter);	
 		}
 
-		/// <summary>
-		/// resolve at run time the appropriate set of Parameters for a stored procedure
-		/// </summary>
-		/// <param name="provider"></param>
-		/// <param name="connection">a valid open IDbConnection</param>
-		/// <param name="spName">the name of the stored procedure</param>
-		/// <param name="includeReturnValueParameter">whether or not to include their return value parameter</param>
-		/// <returns></returns>
+
+        /// <summary>
+        /// Discover at run time the appropriate set of Parameters for a stored procedure
+        /// </summary>
+        /// <param name="provider">The provider.</param>
+        /// <param name="connection">A valid open <see cref="IDbConnection"/>.</param>
+        /// <param name="transaction">A <see cref="IDbTransaction"/>.</param>
+        /// <param name="spName">Name of the stored procedure.</param>
+        /// <param name="includeReturnValueParameter">if set to <c>true</c> [include return value parameter].</param>
+        /// <returns>The stored procedure parameters.</returns>
 		private static IDataParameter[] InternalDiscoverSpParameterSet(IDbProvider provider,
-			IDbConnection connection, string spName, bool includeReturnValueParameter)
+			IDbConnection connection, IDbTransaction transaction, string spName, 
+            bool includeReturnValueParameter)
 		{
 			using (IDbCommand cmd = connection.CreateCommand())
 			{
+                if (transaction != null)
+                {
+                    cmd.Transaction = transaction;
+                }
 				cmd.CommandType = CommandType.StoredProcedure;
 				cmd.CommandText = spName;
 

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs?rev=407864&r1=407863&r2=407864&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper.Test/NUnit/SqlMapTests/MSSQL/ProcedureTest.cs Fri May 19 10:56:31 2006
@@ -116,6 +116,29 @@
 			Assert.IsNotNull(testAccount);
 			Assert.AreEqual(99, testAccount.Id);
 		}
+
+        /// <summary>
+        /// Test DBHelperParameterCache in transaction
+        /// </summary>
+        [Test]
+        public void TestDBHelperParameterCache()
+        {
+            Account account = new Account();
+
+            account.Id = 99;
+            account.FirstName = "Achille";
+            account.LastName = "Talon";
+            account.EmailAddress = "Achille.Talon@somewhere.com";
+
+            sqlMap.BeginTransaction();
+            sqlMap.Insert("InsertAccountViaStoreProcedure", account);
+
+            Account testAccount = sqlMap.QueryForObject("GetAccountViaColumnName", 99) as Account;
+            sqlMap.CommitTransaction();
+
+            Assert.IsNotNull(testAccount);
+            Assert.AreEqual(99, testAccount.Id);
+        }
 		#endregion
 	}
 }

Modified: ibatis/trunk/cs/mapper/IBatisNet.DataMapper/DataExchange/DotNetObjectDataExchange.cs
URL: http://svn.apache.org/viewvc/ibatis/trunk/cs/mapper/IBatisNet.DataMapper/DataExchange/DotNetObjectDataExchange.cs?rev=407864&r1=407863&r2=407864&view=diff
==============================================================================
--- ibatis/trunk/cs/mapper/IBatisNet.DataMapper/DataExchange/DotNetObjectDataExchange.cs (original)
+++ ibatis/trunk/cs/mapper/IBatisNet.DataMapper/DataExchange/DotNetObjectDataExchange.cs Fri May 19 10:56:31 2006
@@ -78,7 +78,8 @@
 		/// <param name="dataBaseValue"></param>
 		public override void SetData(ref object target, ResultProperty mapping, object dataBaseValue)
 		{
-            if (target.GetType() != _parameterClass)
+            if ( (target.GetType() != _parameterClass)
+                && !_parameterClass.IsSubclassOf(target.GetType())) 
 			{
                 throw new ArgumentException("Could not set value of type '" + target.GetType() + "' in property '" + mapping.PropertyName + "' of type '" + _parameterClass + "'");
 			}