2015-04-27 3 views
0

У меня возникли проблемы с вставкой времени в мою базу данных с использованием Entity Framework.Entity Framework Time Issue

Справочная информация. Я использую компьютер в UTC для создания этого приложения. После его создания я разворачиваю его на сервере, который является UTC + 1. База данных, к которой он подключается, также находится на сервере, который является UTC + 1.

Итак, когда я запускаю локально на свой компьютер, я установил время, например 9 утра, и он сохраняет в базе данных как 10 утра. Это так, как ожидалось.

Когда я запускаю сервер, я помещаю его в 9 утра и сохраняет в базе данных как 11am. Это не то, что я ожидал, так как он должен иметь разницу в часах не 2.

Может ли кто-нибудь помочь с этим. Мой текущий код:

 static void Main(string[] args) 
    { 
     DateTime Start = Convert.ToDateTime("27/04/2015 08:00"); 
     DateTime End = Convert.ToDateTime("27/04/2015 16:00"); 


     // generate a schedule 
     ASML_ScheduleHeader schedule = new ASML_ScheduleHeader(); 
     schedule.ScheduleId = Guid.NewGuid(); 

     TimeZone localZone = TimeZone.CurrentTimeZone;  
     schedule.StartTime = localZone.ToLocalTime(DateTime.SpecifyKind(Start, DateTimeKind.Utc)); 
     schedule.EndTime = localZone.ToLocalTime(DateTime.SpecifyKind(End, DateTimeKind.Utc));   


     using (CIC40PrimaryEntities _context = new CIC40PrimaryEntities()) 
     { 
      try 
      { 

       Console.WriteLine("Adding Header"); 
       _context.ASML_ScheduleHeader.Add(schedule); 
       _context.SaveChanges(); 
       Console.WriteLine("Schedule added"); 

      } 
      catch (Exception ex) 
      { 
       Console.WriteLine("Schedule not added"); 
      } 

      Console.Read(); 
     } 
    } 
+0

почему не используют время UTC для всех? – demo

ответ

0

я настоятельно рекомендую использовать UTC по всему, Вы всегда можете преобразовать DateTime местному времени в уровне представления.

Поэтому я бы хотел его хранить;

Это поможет, если вы могли бы дать нам некоторые более явные результаты, возможно, некоторые тестовые случаи :)

+0

Я пробовал это, но он все еще помещает неправильное время. Он просто помещает время как 8am в базу данных, когда должно быть 9 утра. Мой код: schedule.StartTime = DateTime.SpecifyKind (DateTime Start = Convert.ToDateTime ("29/04/2015 08:00"), DateTimeKind.Utc) ;. –