Pertama:jangan pernah gunakan var ts = new TransactionScope()
. Adalah satu-satunya liner yang mematikan aplikasi Anda. Selalu gunakan konstruktor eksplisit yang memungkinkan Anda menentukan tingkat isolasi. Lihat menggunakan TransactionScope() baru yang Dianggap Berbahaya.
Sekarang tentang pertanyaan Anda:logika untuk tidak mempromosikan dua koneksi dalam lingkup yang sama ke DTC sangat bergantung pada driver/penyedia yang bekerja sama untuk memberi tahu Sistem. Transaksi bahwa dua koneksi yang berbeda mampu mengelola transaksi terdistribusi dengan baik sendiri karena manajer sumber daya yang terlibat adalah sama. SqlClient post SQL Server 2008 adalah driver yang mampu melakukan logika ini. Driver Oracle yang Anda gunakan tidak (dan saya tidak mengetahui versi apa pun, btw).
Pada akhirnya benar-benar sangat mendasar:jika Anda tidak menginginkan DTC, jangan buat DTC! Pastikan Anda menggunakan tepat satu koneksi dalam cakupan. Jelas dapat diperdebatkan bahwa Anda tidak memerlukan dua koneksi. Dengan kata lain, singkirkan dua repositori terpisah dalam model data Anda. Gunakan hanya satu repositori untuk Pesanan, Inventaris, dan apa lagi yang tidak. Anda menembak diri Anda sendiri dengan mereka dan Anda meminta solusi debu peri.
Pembaruan:Driver Oracle 12c r1:
"Asosiasi transaksi dan koneksi:Koneksi ODP.NET, secara default, terlepas dari transaksi hanya ketika objek koneksi ditutup atau objek transaksi dibuang"