এখানে 2 প্রধান ধরণের লেনদেন হয়; সংযোগ লেনদেন এবং পরিবেষ্টনের লেনদেন। সংযোগের লেনদেন (যেমন স্কেল ট্রান্সজেকশন) সরাসরি ডিবি সংযোগের সাথে আবদ্ধ (যেমন এসকিএল কানেকশন), যার অর্থ আপনাকে সংযোগটি প্রায় পাশের দিকে চালিয়ে যেতে হবে - কিছু ক্ষেত্রে ঠিক আছে, তবে "তৈরি / ব্যবহার / প্রকাশ" অনুমতি দেয় না ব্যবহার, এবং ক্রস- db কাজ অনুমতি দেয় না। একটি উদাহরণ (স্থানের জন্য ফর্ম্যাট করা):
using (IDbTransaction tran = conn.BeginTransaction()) {
try {
// your code
tran.Commit();
} catch {
tran.Rollback();
throw;
}
}
খুব অগোছালো নয়, তবে আমাদের সংযোগ "সংযোগ" সীমাবদ্ধ। আমরা যদি বিভিন্ন পদ্ধতিতে কল করতে চাই তবে আমাদের এখন "সংযোগ" চারপাশে পাস করতে হবে।
বিকল্পটি একটি পরিবেশন লেনদেন; .NET 2.0 এ নতুন, ট্রানজেকশনস্কোপ অবজেক্ট (System.Transferences.dll) বিভিন্ন অপারেশন ব্যবহারের অনুমতি দেয় (উপযুক্ত সরবরাহকারীরা স্বয়ংক্রিয়ভাবে পরিবেশনার লেনদেনে তালিকাভুক্ত হবে)। এটি বিদ্যমান (অ-লেনদেনের) কোডটিতে retro-ফিট করা এবং একাধিক সরবরাহকারীর সাথে কথা বলা সহজ করে তোলে (যদিও আপনি একাধিকের সাথে কথা বললে ডিটিসি জড়িত হবে)।
উদাহরণ স্বরূপ:
using(TransactionScope tran = new TransactionScope()) {
CallAMethodThatDoesSomeWork();
CallAMethodThatDoesSomeMoreWork();
tran.Complete();
}
এখানে নোট করুন যে দুটি পদ্ধতি তাদের নিজস্ব সংযোগগুলি পরিচালনা করতে পারে (উন্মুক্ত / ব্যবহার / বন্ধ / নিষ্পত্তি), তবুও তারা নিঃশব্দে আমাদের কিছু পাস না করে পরিবেশনীয় ব্যবসায়ের অংশ হয়ে যাবে।
যদি আপনার কোড ত্রুটি হয়, নিষ্পত্তি () সম্পূর্ণ () ছাড়াই কল করা হবে, সুতরাং এটি আবার ঘূর্ণিত হবে। প্রত্যাশিত নেস্টিং ইত্যাদি সমর্থিত, যদিও আপনি অভ্যন্তরীণ লেনদেনটি রোল-ব্যাক করতে না পারলেও বাহ্যিক লেনদেন সম্পূর্ণ করেন: যদি কেউ অসন্তুষ্ট হন তবে লেনদেনটি বাতিল হয়ে যায়।
লেনদেনস্কোপের অন্য সুবিধাটি হ'ল এটি কেবল ডাটাবেসের সাথে আবদ্ধ নয়; যে কোনও লেনদেন-সচেতন প্রদানকারী এটি ব্যবহার করতে পারেন। উদাহরণস্বরূপ ডাব্লুসিএফ। বা প্রায় কিছু ট্রানজেকশনস্কোপ-সামঞ্জস্যপূর্ণ অবজেক্ট মডেল রয়েছে (যেমন। রোলব্যাক সক্ষমতার সাথে নেট ক্লাস - সম্ভবত একটি স্মৃতিসৌধের চেয়ে সহজ, যদিও আমি নিজেরাই এই পদ্ধতির ব্যবহার করি নি)।
সব মিলিয়ে একটি খুব, খুব দরকারী অবজেক্ট।
কিছু সতর্কতা:
- এসকিউএল সার্ভার 2000-এ, একটি লেনদেনস্কোপ তাত্ক্ষণিকভাবে ডিটিসিতে যাবে; এটি এসকিউএল সার্ভার ২০০৫ এবং তারপরে স্থির করা হয়েছে, আপনি ডিটিসিতে উন্নীত না হওয়া পর্যন্ত এটি 2 টি উত্স ইত্যাদির সাথে কথা না হওয়া পর্যন্ত এটি এলটিএম (অনেক কম ওভারহেড) ব্যবহার করতে পারে।
- এখানে একটি সমস্যা রয়েছে যার অর্থ আপনার সংযোগের স্ট্রিংটি টুইঙ্ক করার দরকার হতে পারে