I want to tell the user that a record was not deleted because it has child data, but how can I be sure that the exception was thrown because of a foreign key violation? I see that there a sqlexception class that is used for all sql exception.
Assume you're using SQL Server.
Using teh web archive - https://web.archive.org/web/20190120182351/https://blogs.msdn.microsoft.com/tomholl/2007/08/01/mapping-sql-server-errors-to-net-exceptions-the-fun-way/
try { # SQL Stuff } 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("Some helpful description", ex); break; case 2601: // Primary key violation throw new DuplicateRecordException("Some other helpful description", ex); break; default: throw new DataAccessException(ex); } } }
Case 547 is your man.
UPDATE The above is sample code and should not be used. Please follow the link as to explain why.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With