Tu problema no es el SP, es que no está entendiendo bien el modelo E-R, ni tampoco programando bien en .Net (sin ofender).
Vamos por partes:
1) Una restricción de FK es una
restricción de integridad referencial y no la puedes violar así porque sí.
Lo que te está diciendo el MySQL es que
hay al menos un registro en una tabla que depende del valor del registro que pretendes borrar... Eso no se
puede ni se
debe hacer.
Imagina que se trata de borrar un registro de la tabla Empleado, y te quedan los de CargasSociales de ese empleado, donde figuran los hijos. Si el empleado se fué, renunció o fue despedido, no tiene ningún sentido que los hijos sigan figurando en la base, ya que no hay a quién hacerle retenciones ni aportes al sueldo por sus cargas sociales...
Ese es un caso de dependencia de integridad referencial: Si el empelado desaparece, las cargas sociales del empleado también.
¿Se entiende?
¿Cómo se maneja eso?: O borras los registro dependientes primero, o bien reconfiguras la otra tabla para que se borre en cascada, en caso de borrarse la PK referida... No hay otra.
En esos casos se debe agregar, a la definición del la FK en la tabla el ON DELETE CASCADE ON UPDATE CASCADE.
2) Cuando dices:
Cita: . Estoy llamando el SP desde .net y si ocurre el error se caeria el programa.
es evidente que te falta programación en .Net, porque deberías conocer las estructuras
Try/Catch/End Try, que se implementan, precisamente, para controlar los posibles errores y excepciones que puedan ocurrir en determinadas circunstancias.
Además, es evidente que no estás usando correctamente las excepciones, porque MySQL devuelve determinadas excepciones propias (MysqlException) que son perfectamente administrables cuando usas el MySQL Connector.Net.
Te sugiero una visita a la página respectiva en el manual de referencia:
MySQL :: 25.2 MySQL Connector.NET, donde encontrarás ejemplos y detalles del uso de este conector.