Pertama, ada tidak ada yang namanya transaksi bersarang di SQL Server . Ini penting.
Kedua, kedua TransactionScopes menggunakan conn1 sehingga Anda (pada tingkat SQL Server) menambah @@TRANCOUNT untuk setiap BEGIN TRANSACTION
Penjelasan sederhana:transaksi bagian dalam dilakukan ketika transaksi luar dilakukan karena memutar kembali bagian dalam akan mengembalikan keduanya transaksi
Yaitu, COMMIT TRANSACTION (tersirat oleh .Complete dan .Dispose ) mengurangi @@TRANCOUNT sementara ROLLBACK TRANSACTION (tersirat oleh .Dispose saja) membawanya kembali ke nol. Jadi rollback bagian dalam ditekan karena "tidak ada yang namanya transaksi bersarang"
Jika Anda menggunakan conn2 dengan benar di 'lingkup dalam' itu akan berfungsi seperti yang diharapkan karena 2 transaksi tidak terkait di tingkat server basis data. Di situlah pentingnya...