Преобразование System.Datetime?в System.DateTime в сопоставленном классе EntityFramework - PullRequest
0 голосов
/ 13 декабря 2018

У меня есть проект в C # Visual Studio, который использует EF для подключения к базе данных MySQL.Картограф EF дал мне класс "enteredtickets", сопоставленный с представлением MySQL.Моя проблема в том, что есть вызов свойства TicketDate, если тип данных - System.DateTime?как и MySQL, и дата может быть нулевой.Проблема в том, что я хотел бы System.DateTime.

Итак, я хотел бы изменить заводской код сопоставленного класса EF, чтобы сделать готовое свойство TicketDate System.DateTime.Однако я осторожен с тем, что нужно изменить в случае, если я нарушу код!

Из прочтения, я думаю, мне нужно утверждение вроде

datetime??new DateTime(2000,1,1)

Так что мои вопросы

  1. Должен ли я в первую очередь изменять код, отображенный в Factory EF?
  2. Как мне встроить преобразование в код, отображенный в 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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...