Entify Framework 4.1[问题集] 一个实体的双向依赖引起的错误

昨天更新系统后,上午物流的同事反馈打印出库单时出现这个异常错误。Collection was modified; enumeration operation may not execute.
[InvalidOperationException: Collection was modified; enumeration operation may not execute.]
   System.Collections.Generic.Enumerator.MoveNextRare() +12647947
   System.Data.Objects.ObjectStateManager.PerformAdd(IList`1 entries) +1204
   System.Data.Objects.ObjectStateManager.DetectChanges() +244
   System.Data.Entity.Internal.Linq.InternalSet`1.Find(Object[] keyValues) +53

我们的系统是数据库访问采用的是EF4.1框架,对数据库的常用访问接口做了简单的封装,通过Find来获取单条信息。同样的代码在此系统的很多地方使用都没有问题,在开发环境下运行这个功能也没有错误提示,只有在生产环境下才会出现。

开始排查这部分代码和其他使用这个方法的代码有什么不同,对比后也没有发现差异。突然间想起之前听同事说实体双向引用时,在序列化时会报异常信息,拿着部分代码是不是因为双向引用引起的呢?看了同事的实体代码,确实存在着ClassA中有个属性是ClassB,ClassB中有一个属性是ClassA。移除了ClassB中的ClassA和配置的外键关系,更新到生产环境后问题得以解决。

后来又Google了这个问题,发现在http://stackoverflow.com/questions/7536459/ef-4-1-and-collection-was-modified-enumeration-operation-may-not-execute-exc 有详细的解答。

转载于:https://www.cnblogs.com/TransTown/archive/2012/02/04/2337873.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值