将datetime2数据类型转换为日期时间数据类型会导致超出范围的值

asp.net-mvc datetime entity-framework

我有一个ASP.NET MVC应用程序,我正在编辑现有数据库以更新特定字段DateTime 。我的数据库有4个字段,其中两个是DateCreatedDateModified 。当我尝试更新字段时,我想保持DateCreated时间相同,没有理由更新它的创建日期,并且我使用DateTime.Now将DateModified时间更改为当前时间

这是给定的代码,只是在我做错了什么的情况下。这是我第一次使用ASP.NET MVC,所以请温柔。我已经看到了调用Context其他答案,但我找不到任何对它的引用。当我运行应用程序时,我在标题中收到错误消息, contractEntity.SaveChanges()为红色。

public ActionResult Edit(Contract editContract) {
var contract = (from c in contractEntity.Contracts where c.Id == editContract.Id select c).First();
if (!ModelState.IsValid)
    return View(contract);
// editContract.DateCreated = contract.DateCreated;
// editContract.DateModified = DateTime.Now;
  contractEntity.ApplyCurrentValues(contract.EntityKey.EntitySetName, editContract);
  contractEntity.SaveChanges();
  return RedirectToAction("Index");
}

请,任何帮助表示赞赏。谢谢。

一般承认的答案

阅读本网站后,我发现打开了我的数据库的.edmx文件并进行了更改:

<...Provider="System.Data.SqlClient" ProviderManifestToken="2008".../>

<...Provider="System.Data.SqlClient" ProviderManifestToken="2005".../>

这是可以接受的还是有更好的方法来解决这个错误?


热门答案

对我来说,我有同样的问题,但问题是默认情况下,当我保存模型时,正在创建无效的DateTime。我有一个字段CreatedOn并没有将它设置为任何东西,这意味着值为01/01/0001这是一个无效的SQL DateTime。设置它摆脱了我的问题。



许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因
许可下: CC-BY-SA with attribution
不隶属于 Stack Overflow
这个KB合法吗? 是的,了解原因