Гость
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / добавление записи посредством EF. / 9 сообщений из 9, страница 1 из 1
11.04.2017, 07:35
    #39436250
denis_viktorovich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
Доброго времени суток!
В приложении .Net MVC 3 добавляются документы, база в MS SQL 2008, в таблице документа есть поле Doc_id типа int identity(1,1).
В контроллере GET задается новый экземпляр моего объекта, в POST проходят проверки и сохранение его в базу посредством EF.
Оно задано в качестве первичного ключа и участвует в формировании номера документа при его печати. Удалить введенный документ в приложении нельзя.
Проблема в том, что временами получаются промежутки в последовательности например - id=1,2,3,4,8,10,11, т.е. в таблицу не записаны документы с ИД 5 и 9, но счетчик Identity по какой-то причине перескочил.
Этих промежутков в общем хотелось бы избежать, но интереснее понять причину такого поведения identity.
...
Рейтинг: 0 / 0
11.04.2017, 07:43
    #39436253
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
denis_viktorovich интереснее понять причину такого поведения identity.
MS SQL при откате транзакции счетчики не откатывает.
...
Рейтинг: 0 / 0
11.04.2017, 08:22
    #39436259
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
denis_viktorovichПроблема в том, что временами получаются промежуткипроблема как раз в этом:denis_viktorovichОно задано в качестве первичного ключа и участвует в формировании номера так не делают
...
Рейтинг: 0 / 0
11.04.2017, 08:25
    #39436260
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
denis_viktorovichно интереснее понять причину такого поведения identity.представь, что два человека почти одновременно начали сохранять документ, сначала один, потом второй. При этом, второй дошел до конца, а первый не сохранил документ по какой-то причине. Что теперь счетчику делать - искать свободные промежутки?
...
Рейтинг: 0 / 0
11.04.2017, 08:33
    #39436262
denis_viktorovich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
Shocker.Pro,
это я понимаю, похоже вся проблема в том, что я часть проверок реализовал в приложении, а часть в констрейнах. Вот во втором случае при попытке выполнить insert счетчик увеличивается, а запись понятное дело не записывается.
...
Рейтинг: 0 / 0
11.04.2017, 08:43
    #39436268
denis_viktorovich
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
Shocker.Prodenis_viktorovichПроблема в том, что временами получаются промежуткипроблема как раз в этом:denis_viktorovichОно задано в качестве первичного ключа и участвует в формировании номера так не делают

- да, но в постановке к номеру, кроме уникальности и возможности поиска, никаких требований не было, потому привязал к счетчику. Он не сбрасывается в ноль в конце месяца, нумерация не внутри каждого подразделения, просто сквозной номер.
...
Рейтинг: 0 / 0
11.04.2017, 09:08
    #39436290
Shocker.Pro
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
denis_viktorovichк номеру, кроме уникальности и возможности поиска, никаких требований не былотогда в чем проблема? требования непрерывности не было, ну и славно ))
...
Рейтинг: 0 / 0
11.04.2017, 09:24
    #39436298
Dima T
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
denis_viktorovichв постановке к номеру, кроме уникальности и возможности поиска, никаких требований не было.
Ну и забей на дырки в нумерации, это не криминал.

Номера не надо мешать с ID, вообще не надо пытаться дать какой-то другой смысл абстрактному ключу. Завтра попросят каждый год нумерацию документов с 1 начинать и приплыли.

Был случай: бухгалтерия что-то накосячила и для исправления им надо было сделать второй документ с существующим номером.
...
Рейтинг: 0 / 0
11.04.2017, 11:16
    #39436373
hVostt
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
добавление записи посредством EF.
denis_viktorovichЭтих промежутков в общем хотелось бы избежать, но интереснее понять причину такого поведения identity.

Хочешь избежать, генерируй сам, программно. Конечно тебе придётся столкнуться с попытками приложения добавить две записи с одним и тем же ID, с последующим крэшем, но это ничего. Главное промежутков нет.
...
Рейтинг: 0 / 0
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / добавление записи посредством EF. / 9 сообщений из 9, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]