最佳答案 報這個錯是因為,提交了主鍵重覆的數據,雖然未提交到資料庫中 但是現在的EF上下文中已經包含了我提交的數據,下次在提交正確數據時, 原來添加到上下文中的數據依然還在。。如何處理這個問題呢? 最佳答案 報這個錯是因為,提交了主鍵重覆的數據,雖然未提交到資料庫中 但是現在的EF上下文中已經包含了 ...
最佳答案
報這個錯是因為,提交了主鍵重覆的數據,雖然未提交到資料庫中
但是現在的EF上下文中已經包含了我提交的數據,下次在提交正確數據時,
原來添加到上下文中的數據依然還在。。如何處理這個問題呢?
using(var db = new .......())
{
db.save...........();
}
其他:1、dbcontext 每次使用時重新new一個,不要使用單例模式,可以考慮單元模式。
2、EF 上下文被我設置成了靜態的了
3、我也是Commit時SaveChanges() 方法報更新條目出錯,
別人說是數據的id 重覆,但我調試看了Add 的三個id 都沒重覆,
後來發現是Add對象的DateTime 類型的屬性沒有賦值。賦值之後就能保存到資料庫了。
4、一次插入多行時,其中有一個重覆(我創建了唯一複合索引),導致所有都插入失敗,而且重新運行插入依然失敗。這說明瞭公用一個上下文的壞處,
後來改用Using和cry catch。不出錯就一次插入,出錯就迴圈賦值中using多個上下文,保證不重覆部分插入成功。
來源:https://q.cnblogs.com/q/44768/