关闭

asp.net MVC + linq to entity报"不允许启动新事务,因为有其他线程正在该会话中运行."错误解决方法

标签: asp.netlinqmvcsms
4592人阅读 评论(0) 收藏 举报
分类:

      今天在写代码的时候,遇到这样的一个问题,在循环保存记录的时候,用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();
就是它引起的这个问题,解决的方法,其实很简单,

只要将它放到这个循环的外面就行了.有的朋友会说了,放到外面会保存所有的循环记录吗.答案是肯定的


0
1

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:1397355次
    • 积分:14380
    • 等级:
    • 排名:第884名
    • 原创:287篇
    • 转载:133篇
    • 译文:0篇
    • 评论:322条
    文章分类
    文章存档
    最新评论