C# 亚音速事务错误
考虑到以下准则:C# 亚音速事务错误,c#,mysql,subsonic,transactions,C#,Mysql,Subsonic,Transactions,考虑到以下准则: List<Processo> listaProcesso = new List<Processo>(); Processo processo; processo = new Processo(); processo.AgendamentoID = 9; processo.DataEntrada = DateTime.Now; processo.EtapaE
List<Processo> listaProcesso = new List<Processo>();
Processo processo;
processo = new Processo();
processo.AgendamentoID = 9;
processo.DataEntrada = DateTime.Now;
processo.EtapaExecucao = 0;
processo.RegistrosAfetados = 2;
listaProcesso.Add(processo);
processo = new Processo();
processo.AgendamentoID = 9;
processo.DataEntrada = DateTime.Now;
processo.EtapaExecucao = 0;
processo.RegistrosAfetados = 1;
listaProcesso.Add(processo);
using (TransactionScope ts = new TransactionScope())
{
using (SharedDbConnectionScope scs = new SharedDbConnectionScope())
{
foreach (Processo processoSave in listaProcesso)
{
processoSave.Save();
}
}
ts.Complete();
}
List listaProcesso=new List();
进程进程;
processo=新的processo();
processo.AgendamentoID=9;
processo.DataEntrada=DateTime.Now;
processo.EtapaExecucao=0;
processo.RegistrosAfetados=2;
添加(进程);
processo=新的processo();
processo.AgendamentoID=9;
processo.DataEntrada=DateTime.Now;
processo.EtapaExecucao=0;
processo.RegistrosAfetados=1;
添加(进程);
使用(TransactionScope ts=new TransactionScope())
{
使用(SharedDbConnectionScope scs=new SharedDbConnectionScope())
{
foreach(listaProcesso中的Processo processoSave)
{
processoSave.Save();
}
}
ts.完成();
}
我看不出有什么错误。但是,当第二次调用save()时,我收到一个MySqlException:已经有一个与此连接关联的打开的DataReader,必须先关闭它。
Im使用亚音速3.0.0.3和MySql.Data 6.0.4.0
提前谢谢
卡洛斯·爱德华多·阿佩尔·克莱因(Carlos Eduardo Appel Klein)Hmmm,从错误的外观来看,我假设您在应用程序的其他地方使用了DataReader/IDataReader,并且在保存所有“processo”记录之前没有处理它
您还需要重新排序using语句,因为TransactionScope需要位于内部。对于如何执行上述操作的代码片段,您需要查看Hmmm,根据错误的外观,我假设您在应用程序的其他地方使用了DataReader/IDataReader,并且在保存所有“processo”记录之前没有处理它
您还需要重新排序using语句,因为TransactionScope需要位于内部。对于如何执行上述操作的代码片段,您需要查看这段代码就是应用程序,没有其他调用。我构建了一个模型来模拟这个错误。我更改了使用顺序,但错误仍然存在
谢谢。这段代码就是应用程序,没有其他调用。我构建了一个模型来模拟这个错误。我更改了使用顺序,但错误仍然存在
谢谢。此外,您应该使用ProcessCollection而不是list。在循环中,将项目添加到集合中,然后调用myCollection.BatchSave() 此外,您应该使用ProcessCollection而不是list。在循环中,将项目添加到集合中,然后调用myCollection.BatchSave() 我可能错了,但我认为命令BatchSave()在亚音速3.0中不存在
忘了提到我正在使用ActiveRecord模板。我可能错了,但我认为命令BatchSave()在亚音速3.0中不存在
忘了提到我正在使用ActiveRecord模板。您最好的选择是使用BatchQuery:
您在这里的最佳选择是使用批处理查询:
我找到了解决这个问题的办法
去下载最新的亚音速源代码,自己编译。该错误似乎出现在亚音速代码中,并且已对最新的代码库进行了修复。我找到了解决此问题的方法 去下载最新的亚音速源代码,自己编译。该缺陷似乎存在于亚音速代码中,并且已对最新的代码库进行了修复