From 340060e272d9ad50cf186ac1d447e4318e40d481 Mon Sep 17 00:00:00 2001 From: markpollack Date: Thu, 23 Oct 2008 13:56:18 +0000 Subject: [PATCH] SPRNET-1065 - Extraneous connection open in DataSet operations --- .../Spring.Data/Data/Core/AdoTemplate.cs | 117 ++++++++---------- 1 file changed, 53 insertions(+), 64 deletions(-) diff --git a/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs b/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs index e98ed3a7..9f5984e5 100644 --- a/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs +++ b/src/Spring/Spring.Data/Data/Core/AdoTemplate.cs @@ -329,8 +329,8 @@ namespace Spring.Data.Core IDbDataAdapter dataAdapter = null; try { - dataAdapter = DbProvider.CreateDataAdapter(); - //TODO row updated event handling... (SPRNET-1014) + dataAdapter = DbProvider.CreateDataAdapter(); + //TODO row updated event handling... dataAdapter.SelectCommand = DbProvider.CreateCommand(); dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection; //TODO register for warnings on connection. @@ -1150,8 +1150,7 @@ namespace Spring.Data.Core #endregion ITableMappingCollection mappingCollection = DoCreateMappingCollection(null); - return (int)Execute(new DataAdapterFillCallback(dbProvider, - dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, null, null, null)); } @@ -1173,8 +1172,7 @@ namespace Spring.Data.Core tableMappingName = "Table"; } ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableMappingName }); - return (int)Execute(new DataAdapterFillCallback(dbProvider, - dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, null, null, null)); @@ -1185,10 +1183,9 @@ namespace Spring.Data.Core { ValidateFillArguments(dataTable, sql, tableMapping); ITableMappingCollection mappingCollection = new DataTableMappingCollection(); - mappingCollection.Add(tableMapping); + mappingCollection.Add((object)tableMapping); - return (int)Execute(new DataAdapterFillCallback(dbProvider, - dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, null, null, null)); } @@ -1200,8 +1197,7 @@ namespace Spring.Data.Core ValidateFillArguments(dataTable, sql, tableMapping); ITableMappingCollection mappingCollection = new DataTableMappingCollection(); mappingCollection.Add((object)tableMapping); - return (int)Execute(new DataAdapterFillCallback(dbProvider, - dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, setter, null, null)); } @@ -1216,7 +1212,7 @@ namespace Spring.Data.Core { ValidateFillWithParameterArguments(dataTable, sql, parameters); ITableMappingCollection mappingCollection = DoCreateMappingCollection(null); - return (int)Execute(new DataAdapterFillCallback(dbProvider,dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, null, null, parameters)); @@ -1232,7 +1228,7 @@ namespace Spring.Data.Core tableMappingName = "Table"; } ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableMappingName }); - return (int)Execute(new DataAdapterFillCallback(dbProvider, dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, null, null, parameters)); } @@ -1244,7 +1240,7 @@ namespace Spring.Data.Core ValidateFillWithParameterArguments(dataTable, sql, parameters, tableMapping); ITableMappingCollection mappingCollection = new DataTableMappingCollection(); mappingCollection.Add((object)tableMapping); - return (int)Execute(new DataAdapterFillCallback(dbProvider, dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, null, null, parameters)); } @@ -1257,7 +1253,7 @@ namespace Spring.Data.Core ValidateFillWithParameterArguments(dataTable, sql, parameters, tableMapping); ITableMappingCollection mappingCollection = new DataTableMappingCollection(); mappingCollection.Add((object)tableMapping); - return (int)Execute(new DataAdapterFillCallback(dbProvider, dataTable, + return (int)Execute(new DataAdapterFillCallback(dataTable, commandType, sql, mappingCollection, dataAdapterSetter, null, parameters)); } @@ -1266,7 +1262,7 @@ namespace Spring.Data.Core #endregion #region DataTable Update operations - + //TODO conflict options... public int DataTableUpdateWithCommandBuilder(DataTable dataTable, CommandType commandType, @@ -1494,7 +1490,7 @@ namespace Spring.Data.Core ITableMappingCollection mappingCollection = DoCreateMappingCollection(null); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, mappingCollection, null, null, null)); } @@ -1517,7 +1513,7 @@ namespace Spring.Data.Core tableNames = new string[] { "Table" }; } ITableMappingCollection mappingCollection = DoCreateMappingCollection(tableNames); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, mappingCollection, null, null, null)); } @@ -1527,7 +1523,7 @@ namespace Spring.Data.Core ITableMappingCollection tableMapping) { ValidateFillArguments(dataSet, sql, tableMapping); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, null, null, null)); @@ -1538,7 +1534,7 @@ namespace Spring.Data.Core IDataAdapterSetter setter) { ValidateFillArguments(dataSet, sql, tableMapping); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, setter, null, null)); @@ -1550,7 +1546,7 @@ namespace Spring.Data.Core IDataSetFillLifecycleProcessor fillLifecycleProcessor) { ValidateFillArguments(dataSet, sql, tableMapping); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, setter, fillLifecycleProcessor, null)); @@ -1565,7 +1561,7 @@ namespace Spring.Data.Core { ValidateFillWithParameterArguments(dataSet, sql, parameters); ITableMappingCollection mappingCollection = DoCreateMappingCollection(null); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, mappingCollection, null, null, parameters)); @@ -1581,7 +1577,7 @@ namespace Spring.Data.Core tableNames = new string[] { "Table" }; } ITableMappingCollection tableMapping = DoCreateMappingCollection(tableNames); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, null, null, parameters)); @@ -1592,7 +1588,7 @@ namespace Spring.Data.Core ITableMappingCollection tableMapping) { ValidateFillWithParameterArguments(dataSet, sql, parameters, tableMapping); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, null, null, parameters)); } @@ -1603,7 +1599,7 @@ namespace Spring.Data.Core IDataAdapterSetter dataAdapterSetter) { ValidateFillWithParameterArguments(dataSet, sql, parameters, tableMapping); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, dataAdapterSetter, null, parameters)); } @@ -1615,7 +1611,7 @@ namespace Spring.Data.Core IDataSetFillLifecycleProcessor fillLifecycleProcessor) { ValidateFillWithParameterArguments(dataSet, sql, parameters, tableMapping); - return (int)Execute(new DataAdapterFillCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterFillCallback(dataSet, commandType, sql, tableMapping, dataAdapterSetter, fillLifecycleProcessor, parameters)); } @@ -1685,7 +1681,7 @@ namespace Spring.Data.Core ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableName }); - return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterUpdateCallback(dataSet, mappingCollection, insertCommand, updateCommand, @@ -1726,7 +1722,7 @@ namespace Spring.Data.Core } ITableMappingCollection mappingCollection = DoCreateMappingCollection(new string[] { tableName }); - int returnVal = (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet, mappingCollection, + int returnVal = (int)Execute(new DataAdapterUpdateCallback(dataSet, mappingCollection, insertCommand, updateCommand, deleteCommand, null)); if (insertSql != null) @@ -1755,7 +1751,7 @@ namespace Spring.Data.Core { ValidateUpdateArguments(dataSet, tableName); ITableMappingCollection tableMapping = DoCreateMappingCollection(new string[] { tableName }); - return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterUpdateCallback(dataSet, tableMapping, insertCommand, updateCommand, @@ -1771,7 +1767,7 @@ namespace Spring.Data.Core IDbCommand deleteCommand) { ValidateUpdateArguments(dataSet, tableMapping); - return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterUpdateCallback(dataSet, tableMapping, insertCommand, updateCommand, @@ -1787,7 +1783,7 @@ namespace Spring.Data.Core IDataAdapterSetter dataAdapterSetter) { ValidateUpdateArguments(dataSet, tableMapping); - return (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataSet, + return (int)Execute(new DataAdapterUpdateCallback(dataSet, tableMapping, insertCommand, updateCommand, @@ -1877,7 +1873,7 @@ namespace Spring.Data.Core ParameterUtils.CopyParameters(deleteCommand, deleteParameters); } - int returnVal = (int)Execute(new DataAdapterUpdateCallback(DbProvider, dataTable, mappingCollection, + int returnVal = (int)Execute(new DataAdapterUpdateCallback(dataTable, mappingCollection, insertCommand, updateCommand, deleteCommand, null)); if (insertSql != null) @@ -2165,11 +2161,9 @@ namespace Spring.Data.Core private ITableMappingCollection mappingCollection; private IDataAdapterSetter dataAdapterSetter; private IDataSetFillLifecycleProcessor fillLifecycleProcessor; - private IDbParameters parameters; - private IDbProvider dbProvider; + private IDbParameters parameters; - public DataAdapterFillCallback(IDbProvider dbProvider, - DataSet dataSet, + public DataAdapterFillCallback(DataSet dataSet, CommandType commandType, string sql, ITableMappingCollection mappingCollection, @@ -2177,8 +2171,7 @@ namespace Spring.Data.Core IDataSetFillLifecycleProcessor fillLifecycleProcessor, IDbParameters parameters) { - containsDataSet = true; - this.dbProvider = dbProvider; + containsDataSet = true; this.dataSet = dataSet; this.commandType = commandType; this.sql = sql; @@ -2186,10 +2179,9 @@ namespace Spring.Data.Core this.dataAdapterSetter = dataAdapterSetter; this.fillLifecycleProcessor = fillLifecycleProcessor; this.parameters = parameters; - } - - public DataAdapterFillCallback(IDbProvider dbProvider, - DataTable dataTable, + } + + public DataAdapterFillCallback(DataTable dataTable, CommandType commandType, string sql, ITableMappingCollection mappingCollection, @@ -2197,8 +2189,7 @@ namespace Spring.Data.Core IDataSetFillLifecycleProcessor fillLifecycleProcessor, IDbParameters parameters) { - containsDataSet = false; - this.dbProvider = dbProvider; + containsDataSet = false; this.dataTable = dataTable; this.commandType = commandType; this.sql = sql; @@ -2211,14 +2202,9 @@ namespace Spring.Data.Core public object DoInDataAdapter(IDbDataAdapter dataAdapter) - { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(dbProvider); - dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection; - dataAdapter.SelectCommand.Transaction = connectionTxPairToUse.Transaction; - + { dataAdapter.SelectCommand.CommandType = commandType; - dataAdapter.SelectCommand.CommandText = sql; - + dataAdapter.SelectCommand.CommandText = sql; //TODO investigate performance of cloning....would need to change signature to // DataTableMapping[] otherwise... foreach (DataTableMapping dataTableMapping in mappingCollection) @@ -2277,13 +2263,16 @@ namespace Spring.Data.Core private IDbCommand insertCommand; private IDbCommand updateCommand; private IDbCommand deleteCommand; - private IDataAdapterSetter dataAdapterSetter; - private IDbProvider dbProvider; + private IDataAdapterSetter dataAdapterSetter; - public DataAdapterUpdateCallback(IDbProvider dbProvider, DataSet dataSet, ITableMappingCollection mappingCollection, IDbCommand insertCommand, IDbCommand updateCommand, IDbCommand deleteCommand, IDataAdapterSetter dataAdapterSetter) + public DataAdapterUpdateCallback(DataSet dataSet, + ITableMappingCollection mappingCollection, + IDbCommand insertCommand, + IDbCommand updateCommand, + IDbCommand deleteCommand, + IDataAdapterSetter dataAdapterSetter) { - containsDataSet = true; - this.dbProvider = dbProvider; + containsDataSet = true; this.dataSet = dataSet; this.mappingCollection = mappingCollection; this.insertCommand = insertCommand; @@ -2292,10 +2281,14 @@ namespace Spring.Data.Core this.dataAdapterSetter = dataAdapterSetter; } - public DataAdapterUpdateCallback(IDbProvider dbProvider, DataTable dataTable, ITableMappingCollection mappingCollection, IDbCommand insertCommand, IDbCommand updateCommand, IDbCommand deleteCommand, IDataAdapterSetter dataAdapterSetter) + public DataAdapterUpdateCallback(DataTable dataTable, + ITableMappingCollection mappingCollection, + IDbCommand insertCommand, + IDbCommand updateCommand, + IDbCommand deleteCommand, + IDataAdapterSetter dataAdapterSetter) { - containsDataSet = false; - this.dbProvider = dbProvider; + containsDataSet = false; this.dataTable = dataTable; this.mappingCollection = mappingCollection; this.insertCommand = insertCommand; @@ -2306,11 +2299,7 @@ namespace Spring.Data.Core #region IDataAdapterCallback Members public object DoInDataAdapter(IDbDataAdapter dataAdapter) - { - ConnectionTxPair connectionTxPairToUse = ConnectionUtils.GetConnectionTxPair(dbProvider); - dataAdapter.SelectCommand.Connection = connectionTxPairToUse.Connection; - dataAdapter.SelectCommand.Transaction = connectionTxPairToUse.Transaction; - + { //TODO - did not make copies of parameters... if (insertCommand == null && updateCommand == null && deleteCommand == null) {