实体框架和SQL Server中的DateTime格式

时间:2013-05-16 10:56:06

标签: sql-server entity-framework datetime

我使用Entity Framework从SQL Server获取日期时间。我的数据库中的格式是2013-01-01 00:00:00.000,当我通过JSON格式的实体框架获取它时,它是"\\/Date(1356980400000+0500)\\/"

这是我的代码

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

无法理解问题所在。任何帮助!

2 个答案:

答案 0 :(得分:3)

试试这个:

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

答案 1 :(得分:1)

实体框架不会以JSON格式返回任何内容。它使用数据填充.NET对象,或使用.NET对象中的数据填充数据库。我相信,附加调试器会显示CreatedDate中包含正确的值。

实际问题更可能是因为JSON没有“日期”或“日期时间”类型的概念,尽管对问题有评论。见The "right" JSON date format。一些序列化代码使用.NET SurveyData类并使用.NET框架的JSON序列化程序(可能是DataContractJsonSerializer)将其序列化为JSON,这是以您看到的格式写出来的。这可能是WCF,也可能是旧版本的ASP.NET MVC或Web API。

更高版本的ASP.NET使用NewtonSoft JSON.net库来执行对象的序列化。默认情况下,它们使用ISO 8601格式,这是世界上大多数人在JSON对象中期望的日期或日期时间字段。