我有一个帖子表单,用户可以在其中输入帖子的标题和说明。还有一个提交按钮可以拍摄我的Submit_Post
事件。
在我尝试在我的数据库上saveChanges()
之前,所有内容似乎都运行良好。
protected void Submit_Post(object sender, EventArgs e)
{
using (website_dbEntities objEnt = new website_dbEntities())
{
Post postData = new Post()
{
PostTitle = txtPostTitle.Text,
PostDescription = txtPostDescription.Text,
};
//Add post data to db
objEnt.Posts.Add(postData);
objEnt.SaveChanges(); //hits exception here
}
}
这是我得到的例外:
EntityFramework.dll中发生了'System.Data.Entity.Infrastructure.DbUpdateException'类型的异常,但未在用户代码中处理
我尝试了一些不同的东西,我该如何解决这个问题?
答案 0 :(得分:2)
将此作为社区维基发布,因为它不是"答案"本身,但能够清楚地看到哪些属性阻止更新已经多次保存:
try
{
context.SaveChanges();
}
catch (DbEntityValidationException ex)
{
var errorMessages = ex.EntityValidationErrors
.SelectMany(x => x.ValidationErrors)
.Select(x => x.ErrorMessage);
var fullErrorMessage = string.Join("; ", errorMessages);
var exceptionMessage = string.Concat(ex.Message, " The validation errors are: ", fullErrorMessage);
throw new DbEntityValidationException(exceptionMessage, ex.EntityValidationErrors);
}
这样做实际上是将个别属性验证错误添加到您在黄色死亡屏幕上获得的异常。因此,只要被告知EF无法更新,您就会看到为什么无法更新。这可以帮助您确定问题的根源。