3.C#/.NET編程中的常見異常(持續更新)

來源:互聯網
上載者:User

標籤:blog   http   io   ar   os   使用   sp   for   strong   

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來遍曆就好了。有幾個畫圖的錯我忘了。。。今天先寫這麼多好了

3.C#/.NET編程中的常見異常(持續更新)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.