如何获取抛出SqlException的Message属性中显示的Constraint代码

时间:2011-03-29 23:56:24

标签: c# sql-server sqlexception

假设我有一个像

这样的异常消息
Violation of UNIQUE KEY constraint 'UC_FileTypeName'. Cannot insert duplicate key in object 'dbo.FileUpload'.  

是否有任何类方法或方法来获取名为“UC_FileTypeName”的约束?因为我要在数据库中查找这个约束名称并显示描述性消息。

我正在考虑阅读整个字符串并获取以'UC'开头并以'结尾的字符串。但我知道还有其他约束错误,如'FK_'等,所以它不是一个好主意。

1 个答案:

答案 0 :(得分:1)

在任何情况下,都不要依赖于解析异常的Message属性。实际上,不要依赖于解析任何人类可读的输出。

它不打算被解析。它旨在被人类阅读。这些消息可以并且确实根据当前文化的变化而变化,并且可以随着语法错误的纠正而在发行版之间发生变化。

即使您有相同的“友好”消息,您是否真的认为您的用户可以理解类似“抱歉,您不能输入具有与现有行相同的A,B和C列的另一行” ?

您最好的选择是首先验证您的数据,而不是尝试输入违反任何限制的行。