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();
はこの問題を引き起こし、解決方法は簡単です.それをこのサイクルの外に置けばいいです.ある友达は言います.外に置くとすべてのサイクル記録が保存されますか.答えは肯定的です.