Я не верю, что Linq to Sql может сделать это изначально, хотя написание хранимой процедуры даст вам то, что вы хотите, с синтаксисом вроде:
db.spDeleteUserById(id);
Это потребовало бы написания хранимой процедуры для каждой таблицы, но это довольно тривиальное количество SQL.
Ознакомьтесь с этим сообщением в блоге , в котором автор создал метод расширения, который создает собственный оператор удаления. Возможно, вы сможете использовать эту концепцию и использовать ее для создания процедуры удаления, которая не требует выбора. Недостатком является то, что у вас может возникнуть метод расширения, специфичный для вашей собственной схемы.
Я понимаю, что вы хотите уберечь свою логику от уровня базы данных, но в этом случае я думаю, что было бы намного проще пойти по пути хранимых процедур. Это не будет связано с проблемами с тесно связанной логикой доступа к данным, так как удаление строки по id вряд ли когда-либо потребует рефакторинга.