我需要在C#Winforms应用程序中捕获Unique Constarints。在我以前的版本中,我只有一个UniqueKey,即UK_StudentNo,因此当用户尝试为不同的学生提供相同的学生编号时,我使用下面的代码使用了SQLException约束编号2627来捕获违规情况。

catch (SqlException ex)
            {
                if (ex.Number==2627)
                {
                    MessageBox.Show("Student number already given");
                }
                else
                {
                    MessageBox.Show("Database Error !");
                }
                throw;
            }


但是现在,我有另一个UniqueKey,它是UK_Student_NationalID,我无法将这2个UniqueKeys与它们的ConstraintNumber区别开,因此我无法理解哪个UniqueKey违例引发了异常。当我要显示诸如"Student number already given""NationalID already given"之类的消息时,如何在这两个UniqueKey之间进行区别

最佳答案

检查ex.Message中的异常消息,它应指出违反了哪个约束。

您也许还可以在ex.Errors集合中找到其他信息。

关于c# - 检测到多个唯一键中的哪一个被违反?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43595654/

10-14 19:21