您的位置:首页 > 其它

EF 不允许启动新事务,因为有其他线程正在该会话中运行。

2013-12-07 15:35 891 查看
引起原因:在查询中提交了更改。如在遍历的时候,调用了savechanges();

解决:把savechange()提到循环外.          

 

IOrderedQueryable<TOHOSPITAL_TBL> tb = ent.TOHOSPITAL_TBL.Where(record =>
                    (record.TOHOSPITAL_STATE_TYPE_TBL.VALUE == (int)ToHospitolState.treatment) ||
                    (record.TOHOSPITAL_STATE_TYPE_TBL.VALUE == (int)ToHospitolState.Clinic)).
                        OrderByDescending(record => record.TOHOSPITAL_TIME);
                foreach (TOHOSPITAL_TBL tohospotal in tb)
                {
                    if (!tohospotal.TOHOSPITAL_STATE_TYPE_TBLReference.IsLoaded)
                    {
                        tohospotal.TOHOSPITAL_STATE_TYPE_TBLReference.Load();
                    }
                    ChangeState(tohospotal);
               ent.SaveChanges();
                }
原因IOrderedQueryable<TOHOSPITAL_TBL> tb还在查询中,调用ent.SaveChanges();产生的。

ent.SaveChanges();提出即可

代码:

                IOrderedQueryable<TOHOSPITAL_TBL> tb = ent.TOHOSPITAL_TBL.Where(record =>
                    (record.TOHOSPITAL_STATE_TYPE_TBL.VALUE == (int)ToHospitolState.treatment) ||
                    (record.TOHOSPITAL_STATE_TYPE_TBL.VALUE == (int)ToHospitolState.Clinic)).
                        OrderByDescending(record => record.TOHOSPITAL_TIME);
                foreach (TOHOSPITAL_TBL tohospotal in tb)
                {
                    if (!tohospotal.TOHOSPITAL_STATE_TYPE_TBLReference.IsLoaded)
                    {
                        tohospotal.TOHOSPITAL_STATE_TYPE_TBLReference.Load();
                    }
                    ChangeState(tohospotal);
                }
                ent.SaveChanges();
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐