Linq to sql 更新存储过程中未处理的异常
Linq to sql unhandled exception from update stored procedure
我有一个简单的 Linq dbml class,包含 1 table。首先,我将其配置为 "Use runtime" 以进行更新。通过 UI,我故意将列更新为错误的值。然后调用 dataContext.SubmitChanges 会抛出错误,该错误会在 catch=block 中捕获,并显示 MessageBox "The UPDATE statement conflicted with the CHECK constraint ...",这是应该的。所以,一切都很好。
然后我将更新行为更改为 "Customize" 并使用一个简单的更新存储过程(仅 1 个简单的更新语句)。使用正确的值更新 UI 就像一个魅力。更新存储过程被调用,一切都很好。但是当通过 UI 输入这个错误的值,然后按更新时,我在这行代码(Linq class 的内部代码)上得到一个未处理的异常:
IExecuteResult result = this.ExecuteMethodCall(this,
((MethodInfo)(MethodInfo.GetCurrentMethod())), field1, field2, ...);
Title: Exception User-Unhandled System.Data.SqlClient.SqlException:
'The UPDATE statement conflicted with the CHECK constraint
"CK_tblRitCentraal". The conflict occurred in database "RCS", table
"dbo.tblRitCentraal", column 'RitOpmerkingen'.
The statement has been terminated.'
非常感谢任何帮助!
感谢您的回复。你是对的,我的问题是,第二种情况下的异常没有被捕获,即使它与第一种情况中的错误完全相同。
同时我解决了我的问题。我所要做的就是勾选 "do not break on this type of exceptions"。现在异常很好地传递给 UI,我可以处理它。
我还是不明白为什么。但是,嘿,它已经解决了,所以我不应该抱怨。
我有一个简单的 Linq dbml class,包含 1 table。首先,我将其配置为 "Use runtime" 以进行更新。通过 UI,我故意将列更新为错误的值。然后调用 dataContext.SubmitChanges 会抛出错误,该错误会在 catch=block 中捕获,并显示 MessageBox "The UPDATE statement conflicted with the CHECK constraint ...",这是应该的。所以,一切都很好。
然后我将更新行为更改为 "Customize" 并使用一个简单的更新存储过程(仅 1 个简单的更新语句)。使用正确的值更新 UI 就像一个魅力。更新存储过程被调用,一切都很好。但是当通过 UI 输入这个错误的值,然后按更新时,我在这行代码(Linq class 的内部代码)上得到一个未处理的异常:
IExecuteResult result = this.ExecuteMethodCall(this, ((MethodInfo)(MethodInfo.GetCurrentMethod())), field1, field2, ...);
Title: Exception User-Unhandled System.Data.SqlClient.SqlException: 'The UPDATE statement conflicted with the CHECK constraint "CK_tblRitCentraal". The conflict occurred in database "RCS", table "dbo.tblRitCentraal", column 'RitOpmerkingen'.
The statement has been terminated.'
非常感谢任何帮助!
感谢您的回复。你是对的,我的问题是,第二种情况下的异常没有被捕获,即使它与第一种情况中的错误完全相同。
同时我解决了我的问题。我所要做的就是勾选 "do not break on this type of exceptions"。现在异常很好地传递给 UI,我可以处理它。
我还是不明白为什么。但是,嘿,它已经解决了,所以我不应该抱怨。