I had same problem with SQL Server.

Workaround:

I’m using  one SqlMapper instance inside the loop.


IBatisNet.DataMapper.SqlMapper sqlMap = Mapper.Get();

slqMap.BeginTransaction();

sqlMap.DataSource.ConnectionString = connstr;

for(int i=0; i<itemCount; i++)

{

  sqlMap.Update(”[statement]”,[param])

}

sqlMap.CommitTransaction();

 

-joopa-

 


From: Morten Schmidt [mailto:[EMAIL PROTECTED]
Sent: 26. toukokuuta 2005 17:09
To: ibatis-user-cs@incubator.apache.org
Subject: A concurrent acces has occurred.

 

I'm using iBatisNet, Npgsql and PostgreSQL (and log4net)

 

I try to execute this (C#):

 

 

Mapper().BeginTransaction();

for (int i=0; i<al.Count; i++)

{

BudgetValueClass bv = (BudgetValueClass)al[i];

Mapper().Update("BudgetValueClass.SetBudgetValue", bv);

}

Mapper().CommitTransaction();

 

 

 

al is a big ArrayList (about 5000 elements)

BudgetValueClass is a class of my own

Mapper() is an instance of SqlMapper

 

BudgetValue.SetBudgetValue looks like this:

 

<update id="SetBudgetValue" parameterClass="BudgetValueClass">

update budgetvalue set

budgetvalue = #BudgetValue#

WHERE budgetid = #BudgetId#

AND accountid = #AccountId#

AND dataid = #DataId#

AND month = #Month#

AND year = #Year#

</update>

 

 

It compiles OK, but running the asp.net page I get the following error on Exception:

 

A concurrent acces has occurred.

 

(with the wrong spelling ;o)  )

 

Does anyone know what is happening? I can't get it to work for me...

 

Thank you in advance... (and I hope this is the place to ask...)

 

/morten

Reply via email to