Как вставить нулевое значение с помощью entity Framework в столбец даты с нулевым значением MySQL?

#mysql #entity-framework

#mysql #entity-framework

Вопрос:

У меня есть база данных в MySQL 8.0.15, и в базе данных есть таблица, которая включает столбец ДАТЫ с нулевым значением, как показано ниже;

 CREATE TABLE `sayaclar` (
  `sayac_id` int(11) NOT NULL AUTO_INCREMENT,
  `daire_id` int(11) DEFAULT NULL,
  `sayac_no` varchar(20) CHARACTER SET utf8 COLLATE utf8_unicode_ci NOT NULL,
  `urun_id` int(11) NOT NULL,
  `marka_id` int(11) NOT NULL,
  `model_id` int(11) NOT NULL,
  `montaj_endeks` decimal(18,6) DEFAULT '0.000000',
  `kc` decimal(3,2) DEFAULT NULL,
  `rad_gucu` int(11) DEFAULT NULL,
  `rad_uz` decimal(4,2) DEFAULT NULL,
  `mahal` varchar(45) CHARACTER SET utf8 COLLATE utf8_unicode_ci DEFAULT NULL,
  `aktif` bit(1) NOT NULL DEFAULT b'1',
  `aktif_tarihi` date NOT NULL,
  `pasif_tarihi` date DEFAULT NULL,
  PRIMARY KEY (`sayac_id`),
  KEY `fk_sayaclar_daire_id` (`daire_id`),
  CONSTRAINT `fk_sayaclar_daire_id` FOREIGN KEY (`daire_id`) REFERENCES `daireler` (`daire_id`) ON DELETE CASCADE
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
  

и это моя функция вставки;

 sayaclar meter = new sayaclar
{
   aktif = true,
   aktif_tarihi = DateTime.Now,
   pasif_tarihi = null,
   urun_id = model.urun_id,
   marka_id = model.marka_id,
   model_id = modelId,
   montaj_endeks = mountedIndex,
   sayac_no = meterNumber,
   daire_id = flatId
};
meter = ctx.sayaclar.Add(meter);
ctx.SaveChanges();
return meter.sayac_id;
  

Когда я попытался вставить запись в эту таблицу, функция выдает EntityValidationError сообщение pasif_tarihi is required

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

1. Просто удалите эту строку pasif_tarihi = null,

2. Я пробовал это, но не сработало

3. Это EntityValidationError означает, что внутри вашего sayaclar класса есть что-то (например Required , атрибут) или fluent API (например IsRequired() , call), который сообщает EF, что pasif_tarihi свойство требуется, если оно имеет тип DateTime? . Этого нельзя сказать из опубликованного кода. Определение таблицы базы данных не имеет значения, исключение из модели.

4. Да, свойство pasif_tarihi похоже public Nullable<System.DateTime> pasif_tarihi { get; set; } на проблему в этом?

5. Спасибо @Ivan Stoev. Я удалил оператор Nullable, и он работает