C# 在数据库中编辑EF条目时由于DateTime而未保存更改

C# 在数据库中编辑EF条目时由于DateTime而未保存更改,c#,asp.net-mvc,entity-framework,datetime,C#,Asp.net Mvc,Entity Framework,Datetime,首先,我很抱歉提出了一个被问了好几次的问题,但没有一个解决方案对我有效 到目前为止,我正在编写简单的ASP MVC CRUD应用程序,主要是想弄清楚N层体系结构,问题是在我的模型类中有DateTime和TimeSpan,当创建和对象并将其保存到DB时,所有内容或多或少都起作用,DateTime保存,TimeSpan保存,删除也起作用,但当我在视图中编辑条目时,我注意到的第一件事是,由于某些原因,datetime没有加载,而是显示默认的mm/dd/yyyy,但是timespan是从DB正确加载的,

首先,我很抱歉提出了一个被问了好几次的问题,但没有一个解决方案对我有效

到目前为止,我正在编写简单的ASP MVC CRUD应用程序,主要是想弄清楚N层体系结构,问题是在我的模型类中有DateTime和TimeSpan,当创建和对象并将其保存到DB时,所有内容或多或少都起作用,DateTime保存,TimeSpan保存,删除也起作用,但当我在视图中编辑条目时,我注意到的第一件事是,由于某些原因,datetime没有加载,而是显示默认的mm/dd/yyyy,但是timespan是从DB正确加载的,所以我手动更改日期,点击“Save”,在dbContext上调用SaveChanges时,它抛出异常

结果将datetime2数据类型转换为datetime数据类型 在超出范围的值中

这对我来说真的很奇怪,因为创建是有效的,而编辑是无效的


我尝试了很多方法:将DB类型更改为datetime2,datetime,将时间字段更改回time2,但到目前为止,我没有以任何方式使其正常工作。

根据您的图像,在您尝试更新时,EF似乎试图再插入一条空记录

使用“生成控制器”窗口时,visual studio生成编辑操作为:

[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Entity entity)
{
    if (ModelState.IsValid)
    {
        db.Entry(entity).State = EntityState.Modified;
        db.SaveChanges();
        return RedirectToAction("Index");
    }
    return View(entity);
}
所以我可以建议你更换你的客户。Update@event; 为了


您采取了哪些调试步骤?你想在_client.Update中保存什么值?你需要在问题中包含代码,而不是链接。首先将属性更改为[DataTypeDataType.Date,DisplayFormatDataFormatString={0:yyyy MM dd},ApplyFormatInEditMode=true]ISO格式,这样Chrome日期选择器在添加内容时会显示正确的日期:当编辑不起作用时@StephenMuecke抱歉,我认为这会让帖子变得混乱,我对Chrome datePicker一无所知,只是使用默认的MVC5模板,将尝试使用它,从这两张图片中,不清楚问题出在哪里。一个日期为2016年1月1日,另一个日期为2017年3月3日,这两个日期都不会抛出该例外。另请参阅我上一篇评论的解释,修复了编辑窗口中未加载日期的问题,但datetime和datetime2之间的转换仍然存在问题
    _client.Entry(@event).State = EntityState.Modified;
    _client.SaveChanges();