No i do not leave the readers open.
The code is like this:
//the connectionstrin g is always the same
private IDataReader dataBaseReader;
function:
using (TransactionSco pe ts = new TransactionScop e())
{
//READ
if (dataBaseReader != null && !dataBaseReader .IsClosed)
dataBaseReader. Close();
if (dataBaseConnec tion.State != ConnectionState .Open)
{
dataBaseConnect ion.ConnectionS tring = connectionStrin g;
dataBaseConnect ion.Open();
}
command.Connect ion = dataBaseConnect ion; //Goes to remote DBServer
dataBaseReader = command.Execute Reader(
CommandBehavior .CloseConnectio n);
dt.Table[0].Load(dataBaseR eader, LoadOption.Upse rt);
dataBaseReader. Close();
//INSERT
if (dataBaseReader != null && !dataBaseReader .IsClosed)
dataBaseReader. Close();
if (dataBaseConnec tion.State != ConnectionState .Open)
{
dataBaseConnect ion.ConnectionS tring = connectionStrin g;
dataBaseConnect ion.Open();
}
command.Connect ion = dataBaseConnect ion;
int rowsAffected = command.Execute NonQuery();
if (dataBaseReader != null && !dataBaseReader .IsClosed)
dataBaseReader. Close();
if (dataBaseConnec tion.State != ConnectionState .Open)
{
dataBaseConnect ion.ConnectionS tring = connectionStrin g;
dataBaseConnect ion.Open();
}
command.Connect ion = dataBaseConnect ion;
object result = command.Execute Scalar();
//READ
if (dataBaseReader != null && !dataBaseReader .IsClosed)
dataBaseReader. Close();
if (dataBaseConnec tion.State != ConnectionState .Open)
{
dataBaseConnect ion.ConnectionS tring = connectionStrin g;
///EXCEPTION!!!
dataBaseConnect ion.Open();
///EXCEPTION!!!
}
command.Connect ion = dataBaseConnect ion; //Goes to remote DBServer
dataBaseReader = command.Execute Reader(
CommandBehavior .CloseConnectio n);
dt.Table[0].Load(dataBaseR eader, LoadOption.Upse rt);
dataBaseReader. Close();
}
Thank for everything you have been very helpful.
"Marc Gravell" wrote:
Are you perhaps leaving your readers open? It is unfortunately quite hard to
tell without some code... I'll try and run a few tests later to see if I can
figure anything out...
Marc