DateTime未正确保存到我的数据库中

时间:2015-12-14 19:41:48

标签: c# sql-server datetime

我正在努力解决为什么我的 var rnd = new Random(); var pkg = new ExcelPackage(); var ws = pkg.Workbook.Worksheets.Add("Test"); var blist = new List<bool>(); for(int i=0; i < 20;i++) { blist.Add(rnd.NextDouble() > .5 ? true : false); } ws.Cells["A5"].LoadFromCollection(blist, true); pkg.SaveAs(new FileInfo(@"c:\tmp\bool.xlsx")); 被错误地保存到我的数据库中。

我将值DateTime(作为字符串)与格式(20/12/2015)一起传递给dd/MM/yyyy并将其解析为DateTime,但它始终以{{{{}}保存到我的SQL Server数据库中1}}

06/12/2015

2 个答案:

答案 0 :(得分:6)

嗯,你的意思是更新实体的StartDate属性,然后将其保存回数据库:

public ActionResult SaveSettings(ProjectPlan projectPlan)
{
     var plan = this._dc.ProjectPlans.Single(a => a.Id == projectPlan.Id);
     plan.StartDate = DateTime.ParseExact(projectPlan.ShortDateTime, projectPlan.DateFormat, null);
     this._dc.SaveChanges();
}

在这一行上你基本上杀死了EF所知道的每一个上下文:

plan = projectPlan;

因此,如果您查看针对SQL数据库生成的实际SQL查询,您会注意到正好更新了0行。

答案 1 :(得分:2)

文本表示不存储在服务器中,当您拥有DateTime对象时,它也不存储在.NET中。它只是一个很大的数字来计算&#34; ticks&#34;从一个固定的时间。

当您选择日期回到字符串时,您需要格式化日期,插入方无法控制它(除非插入方也存储格式字符串或您不存储它作为日期而是将其存储为字符串)