asp.NetMVC+linq to entityレポートでは、セッションで他のスレッドが実行されているため、新しいトランザクションの開始は許可されません.エラー解決方法


今日、コードを書いているときに、このような問題に遭遇しました.記録をループして保存するときに、SaveChanges()メソッドで、「新しいトランザクションの開始は許可されていません.他のスレッドがこのセッションで実行されているからです.」ということを教えてくれました.文字通り、東西が開かれているはずで、閉じていないのにまた開こうとしました.その時は本当に何の問題が起こったのか分かりませんでしたが、後でMSDNを調べてみました.発見しました.元々はSaveChanges()メソッドであり、同時衝突を引き起こし、
コードを出してみましょう
foreach (var item in student)
                {
                    SMS_MsgInceptGroup sms_msg = new SMS_MsgInceptGroup();

                    sms_msg.user_id = item.id;
                    sms_msg.msg_id = msgid;

                    newEtrain.AddToSMS_MsgInceptGroup(sms_msg);
       newEtrain.SaveChanges();
                }

                
皆さん最後の一言に注意してください.
newEtrain.SaveChanges();
はこの問題を引き起こし、解決方法は簡単です.
それをこのサイクルの外に置けばいいです.ある友达は言います.外に置くとすべてのサイクル記録が保存されますか.答えは肯定的です.