powered by simpleCommunicator - 2.0.49     © 2025 Programmizd 02
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / добавление записи посредством EF.
9 сообщений из 9, страница 1 из 1
добавление записи посредством EF.
    #39436250
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго времени суток!
В приложении .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
добавление записи посредством EF.
    #39436253
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovich интереснее понять причину такого поведения identity.
MS SQL при откате транзакции счетчики не откатывает.
...
Рейтинг: 0 / 0
добавление записи посредством EF.
    #39436259
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichПроблема в том, что временами получаются промежуткипроблема как раз в этом:denis_viktorovichОно задано в качестве первичного ключа и участвует в формировании номера так не делают
...
Рейтинг: 0 / 0
добавление записи посредством EF.
    #39436260
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
denis_viktorovichно интереснее понять причину такого поведения identity.представь, что два человека почти одновременно начали сохранять документ, сначала один, потом второй. При этом, второй дошел до конца, а первый не сохранил документ по какой-то причине. Что теперь счетчику делать - искать свободные промежутки?
...
Рейтинг: 0 / 0
добавление записи посредством EF.
    #39436262
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
это я понимаю, похоже вся проблема в том, что я часть проверок реализовал в приложении, а часть в констрейнах. Вот во втором случае при попытке выполнить insert счетчик увеличивается, а запись понятное дело не записывается.
...
Рейтинг: 0 / 0
добавление записи посредством EF.
    #39436268
denis_viktorovich
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Prodenis_viktorovichПроблема в том, что временами получаются промежуткипроблема как раз в этом:denis_viktorovichОно задано в качестве первичного ключа и участвует в формировании номера так не делают

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

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

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

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


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