由于DateTime在DB中编辑EF条目时未保存更改

时间:2015-11-10 09:24:33

标签: c# asp.net-mvc entity-framework datetime

首先,我很抱歉提出了一个被问过很多次的问题,但没有一个解决方案适合我。

我写的是迄今为止简单的ASP MVC CRUD应用程序,试图找出N层架构,而且我的模型类中有DateTime和TimeSpan,在创建和对象并将其保存到DB时或多或少的工作,保存日期时间,保存时间跨度,删除工作,但当我去视图中编辑条目时,我注意到的第一件事是由于某些原因没有加载日期时间(默认为“mm / dd / yyyy“显示了”,但是时间跨度从DB正确加载,所以我手动更改日期,点击“保存”,当我在dbContext上调用SaveChanges()时,它会抛出异常

  

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

Gist of code snippets

这对我来说真的很奇怪,因为创作有效,而编辑没有。

我尝试了很多东西:将数据库类型更改为datetime2,datetime,将时间字段更改为时间(2),到目前为止,我无法以任何方式使其工作。

1 个答案:

答案 0 :(得分:0)

根据您的图片,当您尝试更新时,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);
}

因此,我建议您更改_client.Update(@event);

    _client.Entry(@event).State = EntityState.Modified;
    _client.SaveChanges();