#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, и он работает