2013-05-16 3 views
0

Я получаю datetime из SQL Server, используя Entity Framework. Формат в моей базе данных - 2013-01-01 00:00:00.000, где, когда я получаю его через Entity Framework в формате JSON, это "\\/Date(1356980400000+0500)\\/".Формат DateTime в Entity Framework и SQL Server

Вот мой код

public class SurveyData 
{  
     [DataMember] 
     public DateTime? CreatedDate { get; set; } 
} 

var surveyDataList = (from survey in context.FDT_SURVEY        
         where survey.Name == surveyName 
         select new SurveyData 
          { 
           SurveyID = SqlFunctions.StringConvert((double)survey.SURVEY_ID).Trim(), 
           CreatedDate = survey.CREATED_DATE, 
          } 
    ); 

в моей базе данных, тип данных CREATED_DATE является datetime.

Невозможно понять, в чем проблема. Любая помощь !

+1

'DATETIME' в SQL Server ** не ** хранится в любом строковом формате - он хранится в виде 8-байтового типа данных. Даты SQL Server не имеют никакого ** формата **, связанного с ними по умолчанию. Дата, которую вы показываете в JSON, - стандартная кодировка JSON. Так в чем проблема с этим? –

+1

\\/Date (1356980400000 + 0500) \\ /, я получаю дату в этом формате. – Ahmed

+0

Да - опять - в чем проблема с этим? Это стандартный JSON - не можете ли вы преобразовать его в объект .NET - или в чем проблема? –

ответ

3

Попробуйте это:

[DisplayFormat(DataFormatString = "{0,d}")] 
    [DataType(DataType.DateTime)] 
    public DateTime? CreatedDate { get; set; } 
+0

Не работает. Он говорит DisplayFormat как неизвестный класс – Ahmed

+1

с использованием System.ComponentModel.DataAnnotations; –

1

Entity Framework не возвращает ничего в формате JSON. Он заполняет объекты .NET данными или заполняет базы данных данными из объектов .NET. Я считаю, что прикрепление отладчика показало бы, что CreatedDate имеет правильное значение.

Актуальная проблема, скорее всего, связана с тем, что JSON не имеет понятия типа «дата» или «дата», несмотря на комментарии к вопросу. См. The "right" JSON date format. Некоторый код сериализации принимает класс .NET SurveyData и сериализует его в JSON с использованием сериализатора JSON платформы .NET (возможно, DataContractJsonSerializer), и это записывает его в формате, который вы видите. Это может быть WCF или более старая версия ASP.NET MVC или Web API.

Более поздние версии ASP.NET используют библиотеку NewtonSoft JSON.net для выполнения сериализации объектов. По умолчанию они используют формат ISO 8601, чего ожидает большинство людей в объекте JSON для поля даты или времени.

Смежные вопросы