Как поддерживать транзакции в N-уровневой архитектуре

Я занимаюсь разработкой приложений в N-Tier Architecture. поскольку все мы знаем, что нам нужно реализовать транзакции во время операции вставки / обновления / удаления. подскажите пожалуйста как использовать транзакцию в c # .net в архитектуре N-уровня. Моя архитектура похожа на эту Applicationform-> middle_Layre-> Factory-> DataAccessLayre-> StoredProcedure-> Таблица в форме приложения. Я создаю объект middleLayer и передаю данные в функцию вставки / обновления / удаления среднего уровня. я создаю объект sqlcommand в factoryclass и заполняю данные, которые я получаю со среднего уровня, и передаю этот объект os sqlcommand в DAL.