Как создать последовательный инкрементный идентификатор для DatabaseGeneratedOption Identity в структуре сущностей - PullRequest
0 голосов
/ 09 января 2020

Мы используем первую модель кода структуры объекта, и его структура классов выглядит следующим образом:

 public class BaseSchema
{
    [Key]
    [ScaffoldColumn(false)]
    [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
    public int Id { get; set; }

    [Display(Name = "Is Deleted")]
    public bool IsDeleted { get; set; }
}

public class School : BaseSchema
{
    [Required]
    [MaxLength(20)]
    public string Name { get; set; }
}

Когда мы сохраняем информацию в школьной таблице, это поле Id генерируется не по порядку. Первоначально изначально он начинался с последовательности 1,2,3,4,5,6,7,8,9,10, а затем внезапно создал следующее значение id как 1011, 2011. Мы сохраняем в школе, как показано ниже

using (var context = new DataContext())
{
    School newschool = new School { Name = "UniqueSchoolName" };
    context.School.Add(newschool);
    context.SaveChanges();
}

Подскажите, пожалуйста, почему он не генерирует идентификаторы в последовательности? Спасибо!

1 Ответ

0 голосов
/ 09 января 2020

вам не нужно беспокоиться о пробелах.

Это по своей конструкции, по соображениям производительности SQL Сервер кэширует 1000 номеров и при SQL Перезапуск сервера кеша больше нет.

И поведение хорошо документировано, см. CREATE TABLE (Transact- SQL) IDENTITY (Свойство) => Примечания: «Последовательные значения после перезапуска сервера или других сбоев»

Также, когда вставки свернуты назад, значения идентичности НЕ сбрасываются

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...