将datetime2数据类型转换为日期时间数据类型会导致超出范围的值。该语句已终止

时间:2016-09-29 17:47:25

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

我想对文章进行更新,我需要跟踪最后修改日期。我将datetime2数据类型的上述错误转换转换为datetime数据类型。

以下是我的articlesController的代码

    [HttpGet]
    public ActionResult Update()
    {
        EditArticlesVM model = new EditArticlesVM();
        return View(model);
    }

    [HttpPost]
    public ActionResult Update(EditArticlesVM model)
    {
        try
        {
            article objArticle = new article
            {
                articleID = model.articleID,
                articleTitle = model.articleTitle,
                articleContent = model.articleContent,
                lastmodified = DateTime.Now
            };
            objBs.articleBs.Update(objArticle);
            TempData["Msg"] = "Article Updated Successfully!";
            return RedirectToAction("Edit");
        }
        catch (DbEntityValidationException dbEx)
        {
            var sb = new StringBuilder();
            foreach (var validationErrors in dbEx.EntityValidationErrors)
            {
                foreach (var validationError in validationErrors.ValidationErrors)
                {
                    sb.AppendLine(string.Format("Entity:'{0}' Property: '{1}' Error: '{2}'",
                    validationErrors.Entry.Entity.GetType().FullName,
                    validationError.PropertyName,
                    validationError.ErrorMessage));
                }
            }
            //throw new Exception(string.Format("Failed saving data: '{0}'", sb.ToString()), dbEx);

            TempData["Msg"] = sb.ToString();
            return RedirectToAction("Edit");
        }
    }

1 个答案:

答案 0 :(得分:1)

似乎你不打算显示Article模型的代码。这是我目前的通用答案。

您必须确保“开始”大于或等于SqlDateTime.MinValue (January 1, 1753)。如果您未设置默认日期,则默认情况下为DateTime.MinValue (January 1, 0001)

所以SQL datetime数据类型无法处理该值。这就是为什么它显示上面的错误。你有2个解决方案。一个是,设置{{1} datetime属性的默认日期model.second选项是,将SQL数据类型更改为Article