【发布时间】:2019-01-29 20:52:22
【问题描述】:
如果用户没有出错,代码运行完美,但是,如果出错,程序不会崩溃,但它不会做任何其他程序要做的事情。当我再次单击添加时,当我的程序将更改保存到数据库时,它会跳转到我的 catch 语句而不保存。捕获后如何清除错误,以便将另一个用户添加到数据库?
为了更清楚:
假设您在程序打开后立即在textbox 中输入Test,Test。你会得到这个异常
InnerException = {"违反 PRIMARY KEY 约束 'PK_Users'。无法在对象 'dbo.Users' 中插入重复键。重复键值为 (Test, Test)。语句已终止。"}。
如果你然后尝试输入 Check,Check 你会得到异常
InnerException = {"违反 PRIMARY KEY 约束 'PK_Users'。无法在对象 'dbo.Users' 中插入重复键。重复键值为 (Test, Test)。语句已终止。"}。
如果名称被更改,为什么我会收到同样的错误。调试时,如果您检查正在使用的名称:db.Users.Add(user) 它显示 Check, Check 所以它不像它没有更改 user.Name
try
{
if (addNameTextBox.Text.Trim().Length == 0 || addTitleTextBox.Text.Trim().Length == 0)
return;
var user = new User();
user.Name = addNameTextBox.Text.Trim();
user.Title = addTitleTextBox.Text.Trim();
db.Users.Add(user);
db.SaveChanges();
addNameTextBox.Text = "";
addTitleTextBox.Text = "";
AutoCompleteNameTextBox();
}
catch (System.Data.Entity.Infrastructure.DbUpdateException)
{
databaseErrorLabel.Visible = true;
databaseErrorLabel.Text = "User with this name is already in database";
}
【问题讨论】:
-
评论不用于扩展讨论;这个对话是moved to chat。
标签: c# winforms entity-framework exception-handling