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:

您在这里的最佳选择是使用批处理查询:
我找到了解决这个问题的办法


去下载最新的亚音速源代码,自己编译。该错误似乎出现在亚音速代码中,并且已对最新的代码库进行了修复。

我找到了解决此问题的方法

去下载最新的亚音速源代码,自己编译。该缺陷似乎存在于亚音速代码中,并且已对最新的代码库进行了修复