如何修复实体框架中的“ System.Data.Entity.Database.CurrentTransaction”错误消息?

时间:2019-08-15 07:20:08

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

我在sqlserver2017中创建一个数据库,并尝试使用实体framework6连接该数据库。它已连接,并且在编译时没有任何错误,但是当您想在数据库中创建记录时,在运行时出现一些错误消息,如:Database.CurrentTransaction。

screenshot of the problem

/*inside the Controller*/

        [HttpGet]
        public ActionResult AddStudent()
        {
            return View();
        }

        [HttpPost]
        public ActionResult AddStudent(Student new_stud)
        {                        
            if(ModelState.IsValid)
            {
                BLStudent bls = new BLStudent();
                if(bls.Add(new_stud))
                {
                    ViewBag.message = "It's recorded.";
                    ViewBag.color = "aqua";
                }
                else
                {
                    ViewBag.message = "It's not recorded.";
                    ViewBag.color = "red";
                }
            }
            else
            {
                ViewBag.message = "PLS enter the information correctly.";
                ViewBag.color = "red";
            }

            return View();
        }
/*inside the BLStudent Class*/

        UniversityEntities db = new UniversityEntities();

        public bool Add(Student new_stud)
        {
            try
            {
                db.Students.Add(new_stud);
                return Convert.ToBoolean(db.SaveChanges());
            }
            catch (Exception)
            {

                return false;
            }
        }

  

浴室例外:

     

System.Data.Entity.Infrastructure.DbUpdateException:'更新条目时发生错误。有关详细信息,请参见内部异常。'

内部异常:

  

1-UpdateException:更新条目时发生错误。有关详细信息,请参见内部异常。

     

2-SqlException:将datetime2数据类型转换为datetime数据类型导致值超出范围。   该声明已终止。

该如何解决?

1 个答案:

答案 0 :(得分:1)

根据完整的错误消息

  

” SqlException:将datetime2数据类型转换为datetime   数据类型导致值超出范围。该声明已经   终止。”

似乎您的数据库中存在类型转换问题。

我建议将数据库中的DateTime列更改为DateTime2。

显然,您不建议在架构中使用DateTime类型,并且存在转换问题(可能是C#中的默认值,即0001年,等等,无法转换为DateTime)