3.C#/.NET编程中的常见异常(持续更新)_.NET_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > .NET > 3.C#/.NET编程中的常见异常(持续更新)

3.C#/.NET编程中的常见异常(持续更新)

 2014/11/25 3:12:04  Hanny_  程序员俱乐部  我要评论(0)
  • 摘要:1.Objectreferencenotsettoaninstanceofanobject.未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种东西。2.AnentityobjectcannotbereferencedbymultipleinstancesofIEntityChangeTracker.一个实体对象不能由多个IEntityChangeTracker实例引用。首先参见MSDN中对于EntityFramework中的增删改的说明,特别是修改对象那里
  • 标签:.net C# net 编程 异常

1.Object reference not set to an instance of an object.

  未将对象引用(引用)到对象的实例,说白了就是有个对象为null,但是你在用它点出来的各种东西。

2.An entity object cannot be referenced by multiple instances of IEntityChangeTracker.

  一个实体对象不能由多个IEntityChangeTracker实例引用。首先参见MSDN中对于Entity Framework中的增删改的说明,特别是修改对象那里。我们看到说明文档里有这样一句话“对象服务使用IEntityChangeTracker的实例来跟踪对附加到ObjectContext的对象的更改”,1)Tracker是用来跟踪某个对象属性更改的,2)被跟踪的是附加到某个上下文的对象,3)错误信息是说一个对象不能被多个Tracker跟踪,即一个附到特定的Context中的对象有一个Tracker。

  然后我觉着帮我解决这个问题的博客,说的不是太清楚,也可能是我理解能力比较差,试着自己分析一下。对应到原帖,An Entity指的肯定是user,为什么它会有多个IEntityChangeTracker的实例,明显是因为他被附到两个Context中,RoleManager.GetRoleById()方法和UserManager.Add()方法的上下文也就是Entities不一样。

  通俗来讲,对于同一个实体对象(数据库关联)的操作,请在同一个上下文中完成。

3.Collection was modified; enumeration operation may not execute.

  对于一个集合进行foreach遍历,如果foreach中对集合有添加和移除操作,就会报这个错。

  这是IEnumerator自身的特性决定,参见备注部分:

--------------------------------大家晚上好--------------------------------

  只要集合保持不变,枚举数就保持有效。如果对集合进行了更改(如添加、修改或删除元素),则枚举数将失效且不可恢复,并且下一次对 MoveNext 或 Reset 的调用将引发 InvalidOperationException。如果在 MoveNext 和 Current之间修改集合,那么即使枚举数已经无效,Current 也将返回它所设置成的元素。

  枚举数没有对集合的独占访问权;因此,枚举通过集合在本质上不是一个线程安全的过程。即使一个集合已进行同步,其他线程仍可以修改该集合,这将导致枚举数引发异常。若要在枚举过程中保证线程安全,可以在整个枚举过程中锁定集合,或者捕捉由于其他线程进行的更改而引发的异常。

--------------------------------大家晚上好--------------------------------

  只需要把foreach改为for来遍历就好了。有几个画图的错我忘了。。。今天先写这么多好了

上一篇: 免费与红利(下):碎片、垂直与付费 下一篇: 没有下一篇了!
发表评论
用户名: 匿名