Вы не должны удерживать долгосрочные блокировки базы данных. Используйте какую-либо технику маркировки, например, таблицу идентификаторов для каждой загруженной строки с внешним ключом обратно к исходной таблице. Это предотвратит удаление, пока служба WCF не удалит записи во вспомогательной таблице. Он также включит безопасное удаление, добавив WHERE NOT EXISTS (SELECT * FROM loaded_rows WHERE id = outer.id)
к операторам DELETE.
Эта модель даже допускает несколько «загрузчиков», добавляя столбец «loader_id» во вспомогательную таблицу.
Основная проблема с предлагаемым подходом заключается в том, что служба WCF должна удалять строки, когда она завершена с ними. Если он пренебрегает этим из-за ошибки или сбоя, строки будут постоянно заблокированы (или, по крайней мере, до тех пор, пока администратор базы данных не пройдет мимо). Есть множество способов обойти это, в основном вращаясь вокруг какого-то механизма истечения.