Я предполагаю, что происходит то, что вы используете EntLib с пулами соединений.
Что происходит тогда, когда вы получаете транзакцию, которая распространяется более чем на одно соединение. Затем он преобразуется в распределенную транзакцию.
Одна вещь, в которой Энтлиб очень хорош, это закрытие соединений. Вы должны написать свой код таким образом, чтобы он повторно использовал одно соединение.
Часть этого объяснена в этой ссылке: http://msdn.microsoft.com/en-us/library/cc511672.aspx
Если у вас все еще есть проблемы, опубликуйте свой код в каждом цикле.
EDIT
Попробуйте переместить строку:
_dataAccessBase = new DataAccessBase("[dbo].[EventInsert]");
внутри области транзакции.
РЕДАКТИРОВАТЬ 2
Можете ли вы переместить объявление _dataAccessBase в область транзакции
DataAccessBase _dataAccessBase = new DataAccessBase("[dbo].[EventInsert]");
Это просто для того, чтобы убедиться, что соединение не используется за пределами области транзакции.