毕业论文开发语言企业开发JAVA技术.NET技术WEB开发Linux/Unix数据库技术Windows平台移动平台嵌入式论文范文英语论文
您现在的位置: 毕业论文 >> net技术 >> 正文

EF并发问题,在提供程序连接上启动事务时出错

更新时间:2014-5-21:  来源:毕业论文
 Entities data=new Entities();               var list = from p in data.Record                         where p.CreateTime >= d && p.CreateTime < DateTime.Today                         select new                        {                             ID = p.ID,                             Name = p.Name,                             UserID=p.UserID                         };                 foreach (var item in list)             {                 var record = data.Record.FirstOrDefault(a => a.ID == item.ID);                  if (record != null)                  {                      record.RankTime = record.CreateTime.AddDays(3);                      data.SaveChanges();                          BusinessModel.KeywordRank mod = new KeywordRank();                      mod.RecordID = item.ID;                      mod.UserID = item.UserID;                      mod.Name = item.Name;                      mod.Rank = 0;                      mod.CreateTime = DateTime.Now;                        data.KeywordRank.Add(mod);                      data.SaveChanges();      //此处抛异常 在提供程序连接上启动事务时出错。有关详细信息,请参阅内部异常。                   }             }
这样的操作还需要启用事务么? 判断是因为在增加数据的同时读取操作还在进行,所以抛异常。Entities data=new Entities();如果在new一个对象去增加则不会出现。
当你用data在进行数据的遍历的时候:foreach(){} ,却在遍历中进行data的保存,当然会出错啦。相当于data同时在遍历和保存。
就会提示你线程的并发。把data.savechanges()写在foreach外边就行,或者像楼上说的,再建一个Entities的对象进行data2.savechanges()的保存就行了。
设为首页 | 联系站长 | 友情链接 | 网站地图 |

copyright©youerw.com 优尔论文网 严禁转载
如果本毕业论文网损害了您的利益或者侵犯了您的权利,请及时联系,我们一定会及时改正。