Почему объект инициализируется значением 0 в качестве значения по умолчанию в c #

#c# #asp.net

#c# #asp.net

Вопрос:

Я пишу код на c #. использование сущностей… все мои объекты Entities инициализируются нулем в поле первичного ключа. почему это происходит? и как я должен их неинициализировать? Я хочу, чтобы они получили свои идентификаторы в SQL … вот мой объект:

     public partial class Aircraft
    {
        public Aircraft()
        {
            Criterion = new HashSet<Criterion>();
            Flight = new HashSet<Flight>();
        }

        public int AircraftId { get; set; }
        public string AircraftName { get; set; }
        public string Model { get; set; }
        public DateTime? ProductionYear { get; set; }
        public int? FirstRow { get; set; }
        public int? LastRow { get; set; }
        public string SeatsMapUrl { get; set; }

        public virtual ICollection<Criterion> Criterion { get; set; }
        public virtual ICollection<Flight> Flight { get; set; }
    }
  

Я создаю его экземпляр:

 Aircraft aircraft = new Aircraft();
  

и при отладке этого кода
Я обнаружил, что поле — aircraftId (первичный ключ в SQL) — инициализировано нулем??
что я должен исправить?

Комментарии:

1. похоже, что для вашего первичного ключа не установлено значение автоинкремента. Можете ли вы показать нам объявление столбца таблицы?

2. Тогда вы получаете нарушения ключевых ограничений? Я разделяю подозрение Монг Чжу, что первичный ключ неправильно настроен в DB.

3. первичный ключ установлен на автоинкремент.

Ответ №1:

Значение по умолчанию для int равно 0 . Целые числа являются типами значений. Если вам нужно значение null в качестве значения по умолчанию для AircraftId , вам следует изменить тип на int? .

Если требуется автоматически сгенерированное значение, то обычно передача null генерирует следующее значение (зависит от базы данных и их типов и / или триггеров).