через ef core code first
Добавил одну запись в таблицу
Book book = new Book {Name = "A"};
Сделал save
Смотрю в таблицу, есть данные (Id = 1, Name = "A")
Потом опять добавил ту же запись
Book book = new Book {Name = "A"};
Сделал save
Потом ef core выплюнуло мне exception, это хорошо
Затем добавил другую запись
Book book = new Book {Name = "B"};
Сделал save
Смотрю в таблицу, есть данные
(Id = 1, Name = "A")
(Id = 3, Name = "B")
Исчезло id = 2
Как сделать так чтобы при генерации ошибки id не инкрементировалось?
никак
Используй guid и не грей голову
Если речь про MSSQL — то за резервирование последовательностей отвечает свойство СУБД IDENTITY_CACHE По-умолчанию оно включено (ON). Если отключить (OFF) — инкремент произойдет только при успешном коммите транзакции. В других РСУБД — +- аналогично Ну и да, последовательности не созданы для неразрывного учёта позиций
Обсуждают сегодня