Existem algumas opções possíveis que vêm à mente:
- Configure exclusões em cascata no banco de dados para que uma exclusão sempre seja bem-sucedida.
- Verifique os registros relacionados com SELECTs antes de excluir. Isso requer que o aplicativo tenha conhecimento das restrições.
- Um bom modelo de domínio (classes de negócios) deve permitir que o aplicativo esteja ciente dos registros relacionados.
- Um mapeador de O/R, como NHibernate, pode ser usado para definir operações de exclusão em cascata.
- Use o SMO (Microsoft.SqlServer.Smo) para inspecionar as relações do esquema do banco de dados e, em seguida, verifique os registros relacionados existentes. Não sei se isso é possível.