Oracle
 sql >> Teknologi Basis Data >  >> RDS >> Oracle

EF dan TransactionScope untuk SQL Server dan Oracle tanpa meningkatkan/mencakup ke DTC?

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"



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Bagaimana menjalankan file .sql di alat pengembang Oracle SQL untuk mengimpor database?

  2. Masalah hibernasi dengan Oracle Trigger untuk menghasilkan id dari urutan

  3. Apa perbedaan antara Baca yang Tidak Dapat Diulang dan Baca Phantom?

  4. Database Oracle tergantung tanpa batas dalam kueri UPDATE

  5. Tidak Dapat Mengkompilasi GI 12.1.0.2 dan Kesalahan Segmentasi