Не забудьте установить значение свойства Bar
в вашем объекте модели, когда вы не хотите хранить 0. Когда вы создаете новый объект и вызываете SaveChanges
, команда INSERT отправляется в базу данныхкоторый содержит значение all свойств вашей модели, которые сопоставлены с таблицей БД.Свойство int
в классе всегда имеет значение, и вы установили это значение равным 0, а именно, вызывая конструктор объекта.
EF не отправляет только одну половину объекта в базу данных, этосущественная точка Object-Relational-Mapper.Конечно, отправив необработанную команду SQL INSERT, вы можете установить только одну половину значений столбца строки таблицы, и вы получите исключение, если не установите значение для столбца Bar
.Но когда вы используете ORM, вы не отправляете команды INSERT, а сохраняете новые объекты.
В чем именно проблема?Если значение Bar
недопустимо, столбец должен иметь значение NULL и свойство int?
.Если оно должно иметь значение, но не значение 0, то это вопрос установки Bar
в 1 или чего-то еще в конструкторе объекта или применения правильной проверки перед сохранением объекта.
Тип исключения, который вы бы сделалинравится иметь невозможно и, по моему мнению, не имеет смысла, потому что невозможно не установить значение в команде INSERT, которую EF будет отправлять при сохранении объекта