Выполняет ли dapper все операторы запроса, которые являются частью одного запроса в методе QuerySingle, как одну транзакцию? Пример
IF NOT EXISTS (SELECT 1 FROM table WHERE ... INSERT INTO TABLE...
Нет, вы несете ответственность за создание транзакции и управление ею. Поэтому, если вторая вставка не удалась, первая вставка все равно будет вставлена, если вы не используете транзакцию.
Вы можете найти, как использовать транзакцию здесь: