今天在写代码的时候,遇到这样的一个问题,在循环保存记录的时候,用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();
就是它引起的这个问题,解决的方法,其实很简单,
只要将它放到这个循环的外面就行了.有的朋友会说了,放到外面会保存所有的循环记录吗.答案是肯定的