当表中有多个唯一键列时,如何找到哪个列抛出唯一键约束异常?

问题描述:

我是C#.NET的新手。自2天以来我一直在尝试,但我无法成功。
我已经创建了Windows应用程序。 我有两个独特的列电子邮件,电话表。
我想找到在插入记录时抛出唯一键约束异常的列名。我试过了,
var ex = new SqlException();
ex.Data["Mesg"] = "Exception in Email";
throw ex;

但它导致了错误“System.Data.SqlClient.SqlException”没有构造函数定义为”
这可能吗? 帮帮我。当表中有多个唯一键列时,如何找到哪个列抛出唯一键约束异常?

+0

我的建议是验证传入模型,并且不依赖于数据库抛出错误。然后,在连接之前你就知道了前台,而不必浪费时间与数据库交谈。现在,您可以事先发出一个简单的'ArgumentException',并且确切地知道问题所在,因为您只是进行了验证。 – asawyer 2012-03-29 13:33:01

+0

您应该知道,您尝试插入/更新的数据可能违反*多个*约束条件,并且只会收到有关其中一个(不确定)的违规信息。 – 2012-03-29 13:33:23

+0

谢谢@ asawyer,@ Damien_The_Unbeliever。 – 2012-03-29 13:39:17

你想获得这些信息,而不是产生它。因此,使用以下结构:

try 
{ 
    ... (access the database here) ... 
} 
catch (SqlException e) 
{ 
    ... (look at e.Message) 
}