У меня есть проект в C # Visual Studio, который использует EF для подключения к базе данных MySQL.Картограф EF дал мне класс "enteredtickets"
, сопоставленный с представлением MySQL.Моя проблема в том, что есть вызов свойства TicketDate
, если тип данных - System.DateTime?как и MySQL, и дата может быть нулевой.Проблема в том, что я хотел бы System.DateTime.
Итак, я хотел бы изменить заводской код сопоставленного класса EF, чтобы сделать готовое свойство TicketDate
System.DateTime.Однако я осторожен с тем, что нужно изменить в случае, если я нарушу код!
Из прочтения, я думаю, мне нужно утверждение вроде
datetime??new DateTime(2000,1,1)
Так что мои вопросы
- Должен ли я в первую очередь изменять код, отображенный в Factory EF?
- Как мне встроить преобразование в код, отображенный в EF?
Код фабрики, отображенный в EFis
public Nullable<global::System.DateTime> TicketDate
{
get
{
return _TicketDate;
}
set
{
OnTicketDateChanging(value);
ReportPropertyChanging("TicketDate");
_TicketDate = StructuralObject.SetValidValue(value);
ReportPropertyChanged("TicketDate");
OnTicketDateChanged();
}
}
private Nullable<global::System.DateTime> _TicketDate;
partial void OnTicketDateChanging(Nullable<global::System.DateTime> value);
partial void OnTicketDateChanged();
Свойство столбца в таблице MySQL, на котором основано представление:
TABLE `ticket` CHANGE `created` `created` DATETIME NOT NULL;
*** Дополнительная информация **** Для дальнейшего уточнения деталей представления MySQLявляются
select `a`.`ticket_id` AS `ticket_id`,`a`.`status` AS `status`,`a`.`number` AS `number`,`b`.`subject` AS `subject`,`b`.`timespent` AS `timespent`,`a`.`staff_id` AS `staff_id`,`a`.`user_id` AS `user_id`,(case when isnull(`b`.`dayoffset`) then `a`.`created` else (`a`.`created` + interval ceiling(`b`.`dayoffset`) day) end) AS `TicketDate`,`b`.`sysdowntime` AS `sysdowntime`,`b`.`CliDowntime` AS `CliDowntime`,`b`.`TelDowntime` AS `TelDowntime`,`b`.`NetDowntime` AS `NetDowntime`,date_format((case when isnull(`b`.`dayoffset`) then `a`.`created` else (`a`.`created` + interval ceiling(`b`.`dayoffset`) day) end),'%Y%m%d') AS `groupingdate`,`b`.`priority_id` AS `priority_id` from (`ost`.`ost_ticket` `a` join `ost`.`ost_ticket__cdata` `b` on((`a`.`ticket_id` = `b`.`ticket_id`)))
Однако, глядя на определение в MySQL, представление разрешает Null для TicketDate
, не зная, как остановить это
![MySQL View Definition](https://i.stack.imgur.com/HkAaK.png)