Comment get le "nom de contrainte" exact de SQLException

Existe-t-il un moyen d'get le "nom de contrainte" exact "C #" Microsoft SQL Exception ", numéro d'erreur 2601 ou 2627, mais sans parsingr le text de la" propriété Message "?

Par exemple:

catch (SqlException e) { switch (e.Number) { case 2601: /* Here i want to know the constraint name in case i have more than one on a specific table, so i will be able to display the correct error message to the user. For example: case IX_Username: throw new Exception("Username duplication") case IX_PhoneNumber: throw new Exception("PhoneNumber duplication") */ break; default: throw; } } 

Utilisez une convention de nommage pour les contraintes, par exemple, nommez-les pour toujours contenir un trait de soulignement comme FK_Xxx ou UQ_Xxx puis utilisez regex pour parsingr les erreurs pour des noms comme celui-ci

  var match = Regex.Matches("Foreign key FK_Xxx violation.", @"\b\w*_\w*\b") .Cast<Match>().FirstOrDefault(); return match != null ? match.Value : null; 

Existe-t-il un moyen d'get le "nom de contrainte" exact "C #" Microsoft SQL Exception ", numéro d'erreur 2601 ou 2627, mais sans parsingr le text de la" propriété Message "?

Non, il n'y a pas de telle manière.