#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
генерирует следующее значение (зависит от базы данных и их типов и / или триггеров).