2014-10-02 93 views
4

SaveChanges方法執行時,我對實體框架的行爲有疑問。實體框架SaveChanges失敗增量標識列

我有了一個標識列的實體,只是意識到,當如果我叫SaveChanges(新插入),它失敗的話,在我的DB我的標識列增加。

我以前的身份列值等於7,我正在調試我的代碼和SaveChanges方法失敗了5次,因爲我錯過了插入所需的值,並且當它發現我注意到我的身份列值是現在13

enter image description here

這是一種正常的行爲?有沒有辦法避免當實體框架無法提交到我的數據庫時增加身份列值?

感謝所有幫助

+3

這與EF無關,當任何插入在具有身份的表上失敗時,無論如何都會增加,只是嘗試它在SQL管理工作室。你爲什麼在乎? – 2014-10-02 15:56:10

+0

好有趣。有沒有辦法避免這種行爲或是正常的事情? – VAAA 2014-10-02 15:56:48

+3

我不這麼認爲,它的設計特點。想象一下,一個長的交易開始了,然後另一個交易開始了,如果第二個交易不得不等待第一個交易成功或者不確定它應該使用什麼標識,那將是不好的。正如我之前提到的,爲什麼你在乎你的ID是不是順序的? – 2014-10-02 16:01:29

回答

0

它與SQL的行爲,而不是實體Framework.You應該看看Dbreseed命令並執行你的表,如果你不希望身份被wasted.check這太問題RESEED identity columns on the database如果我是你,我不會覺得困擾。相反,只是使用Bigint數據類型爲標識列

相關問題