我正在开发一个asp.net应用程序。 在捕获SqlException时,有没有一种方法可以知道哪个约束条件被违反了?
我正在开发一个asp.net应用程序。 在捕获SqlException时,有没有一种方法可以知道哪个约束条件被违反了?
catch (SqlException ex)
{
if (ex.Errors.Count > 0) // Assume the interesting stuff is in the first error
{
switch (ex.Errors[0].Number)
{
case 547: // Foreign Key violation
throw new InvalidOperationException("Your FK user-friendly description", ex);
break;
// other cases
}
}
}
如果我理解您的问题正确,您需要为ConstraintException添加异常处理程序。
try
{
}
catch(ConstraintException exc)
{
//exc.Message
}
最好的方法是在你的C#代码后台捕获这个异常。
catch(SqlException ex)
{
if (ex.Message.Contains("UniqueConstraint"))
throw new UniqueConstraintException();
throw;
}
你可以在数据层创建自己的异常并抛出,否则你可以像上面提到的那样直接捕获异常。
using System;
public class UniqueConstraintException : Exception
{
}