Короче говоря, ваш код нарушает ссылочную целостность.
Основываясь на ваших примерах кода, я вижу, что вы используете какую-то инфраструктуру для вставки записей в БД. Фреймворки, которые я использовал некоторое время назад, тоже не понравились, поскольку они ожидают, что вы сначала добавите основную запись, а затем добавите подробные записи.
Прежде чем идти дальше, спросите себя, почему вы добавляете и мастер, и детали одновременно, и если есть способ разделить это на 2 логические операции? Если нет, вы всегда можете написать хранимую процедуру и вызвать ее из своего кода:
CREATE PROCEDURE sp_<proc_name>
...
BEGIN TRAN
INSERT INTO <master>...
INSERT INTO <detail>...
COMMIT TRAN