 <p>I recommend just writing a stored procedure (or group of stored procedures) to encapsulate this logic, which would look something like this:</p> <pre><code>update Customer set isDeleted = 1 where CustomerId = @CustomerId /* Say the Address table has a foreign key to customer */ update Address set isDeleted = 1 where CustomerId = @CustomerId /* To delete related records that also have child data, write and call other procedures to handle the details */ exec DeleteProjectByCustomer(@CustomerId) /* ... etc ... */ </code></pre> <p>Then call this procedure from <code>customerRepository.Delete</code> within a transaction.</p>