我在sqlserver2017中创建一个数据库,并尝试使用实体framework6连接该数据库。它已连接,并且在编译时没有任何错误,但是当您想在数据库中创建记录时,在运行时出现一些错误消息,如:Database.CurrentTransaction。
/*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数据类型导致值超出范围。 该声明已终止。
该如何解决?
答案 0 :(得分:1)
根据完整的错误消息
” SqlException:将datetime2数据类型转换为datetime 数据类型导致值超出范围。该声明已经 终止。”
似乎您的数据库中存在类型转换问题。
我建议将数据库中的DateTime列更改为DateTime2。
显然,您不建议在架构中使用DateTime类型,并且存在转换问题(可能是C#中的默认值,即0001年,等等,无法转换为DateTime)