Se debe tener en cuenta que cuando hay relaciones entre tablas, una sugerencia es no eliminar del todo el registro, ya que las referencias que existen pueden generar conflicto para este proceso.
En su lugar, puedes crear una columna de tipo bool (verdadero o falso) que determine si el producto (en este caso) se debe ver en los listados, y en el proceso de "eliminar", lo que haces es cambiar de estado entre true o false.
En el llamado en las listas puedes agregar el filtro para que solo te muestre los que en esa columna el valor sea true.
Me avisas si mi explicación te enredo un poco y buscaré la manera de explicarla un poco mejor.