Спасибо за помощь и советы, исправил инициализацию на using. Скорее всего вылетало тогда из-за цикла и из-за commit в одном месте, а в другом из-за отсутствия dispose. В общем все причесал, все теперь не падает и выглядит нормально.
Почитал еще статьи на этом сайте, в частности статья про типовые ошибки при использовании транзакций помогла причесать код, как следует и позволила избежать некоторых потенциальных ошибок.