2014-10-02 3 views
4

У меня возник вопрос о поведении Entity Framework при выполнении метода SaveChanges.Entity Framework SaveChanges Отказоустойчивый идентификатор столбца

У меня есть объект, который имеет Удостоверение Column, и просто понять, что, когда, если я называю SaveChanges (для новой вставки), и это не удается, тогда мой стиль столбец в моей БД увеличивается.

Я имел обыкновение иметь значение столбца Identity равным 7, и я отлаживал свой код, а метод SaveChanges не удался 5 раз, потому что я пропустил вставить нужное значение, и когда он сработал, я заметил, что значение моего идентификационного столбца было Сейчас 13.

enter image description here

это нормальное поведение? Есть ли способ избежать увеличения значения столбца идентификатора, когда Entity Framework не сможет выполнить фиксацию в моей БД?

Цените помощь

+3

Это не связано с EF, когда какая-либо вставка терпит неудачу в таблице с идентификатором, она все равно увеличивается, просто попробуйте это в студии управления sql. Какое тебе дело? –

+0

Хорошо интересно. Есть ли способ избежать этого поведения или что-то нормальное? – VAAA

+3

Я так не думаю, его особенность дизайна. Представьте, что начата длинная транзакция, затем начинается другая транзакция, было бы плохо, если бы второй пришлось ждать, чтобы убедиться, что первая успешно или нет, чтобы определить, какую идентификацию она должна использовать. Как я упоминал ранее, почему вам все равно, если ваши идентификаторы не являются последовательными? –

ответ

0

Это поведение Sql и не Entity Framework.You должны взглянуть на команду Dbreseed и выполнить его для таблицы, если вы не хотите Идентичность быть wasted.check это так, вопрос RESEED identity columns on the database Если бы я был вами, я бы не беспокоился. Вместо этого просто используйте тип данных Bigint для столбца идентификации

Смежные вопросы