ডাটাবেস.বাগিনট্র্যাশন বনাম লেনদেন। ট্রানজেকশনস্কোপ


90

System.Transactions.TransactionScopeEF6 এর মধ্যে পার্থক্য কী Database.BeginTransaction?

কেউ যদি একটি ছোট উদাহরণ দিতে পারে বা কোনও স্পষ্ট পার্থক্যের সাথে কোনটি ব্যবহার করতে পারে কেবল তা ব্যাখ্যা করতে পারে?

PS: আমার প্রকল্পে, আমি EF6 ব্যবহার করছি। আমি ইতিমধ্যে ডকুমেন্টেশন পড়েছি তবে এটি তেমন কিছু করতে পারেনি। উদাহরণগুলিও দেখুন তবে তারা বরং ব্যবহার করছে SqlConnection.BeginTransactionএবং এমএস Database.BeginTransactionEF6 এ এই নতুনটি চালু করেছে ।

উত্তর:


98

সত্তা ফ্রেমওয়ার্ক 6 এর ডকুমেন্টেশনে আমি উত্তরটি পেয়েছি:

EF6 প্রবর্তনের সাথে সাথে মাইক্রোসফ্ট নতুন এপিআই পদ্ধতি ব্যবহার করার পরামর্শ দেয়: Database.BeginTransaction()এবং Database.UseTransaction()। যদিও System.Transactions.TransactionScopeএখনও খুব ভাল সমর্থন করা হয়েছে তবে EF6- র বেশিরভাগ ব্যবহারকারীর পক্ষে এটি আর প্রয়োজন হয় না ।

যদিও Database.BeginTransaction()কেবলমাত্র ডাটাবেস সম্পর্কিত অপারেশন লেনদেনের জন্য ব্যবহৃত হয় System.Transactions.TransactionScope, এটি ছাড়াও 'প্লেইন সি # কোড' এর জন্যও লেনদেন সম্ভব হয়।

সুতরাং, Database.BeginTransaction()EF6- এ লেনদেনের ক্ষেত্রে কেবলমাত্র ডিবি সম্পর্কিত ক্রিয়াকলাপগুলি ব্যবহার করুন অন্যথায় লেনদেনে System.Transactions.TransactionScopeডিবি ক্রিয়াকলাপ এবং সি # কোড একসাথে মিশ্রণের জন্য ব্যবহার করুন ।

যারা এখনও এই TransactionScopeপদ্ধতির পছন্দ করেন তাদের পক্ষে এটির সীমাবদ্ধতাগুলি পরীক্ষা করার পরামর্শ দেওয়া হয়, বিশেষত মেঘের দৃশ্যে (মেঘ পরিস্থিতি বিতরণ লেনদেন সমর্থন করে না)।

আরও তথ্য এখানে পাওয়া যাবে


11
দুর্ভাগ্যক্রমে, আপনি ডেটাবেস.বাগিনট্রান্সকশন দিয়ে লেনদেন করতে পারবেন না, যেখানে আপনি ট্রানজেকশনস্কোপ দিয়ে করতে পারেন।
ট্রায়ঙ্কো

8
'' প্লেইন সি # কোড '' এর সাথে লেনদেনের অর্থ কী?
জেরার্ড

@ জার্ডার্ড আমি ধরে নিলাম এর অর্থ হ'ল আপনি যদি ইএফ এর বাইরে এসিকিউএল অপারেশন করেন (যেমন ADO.NET ব্যবহার করে), সেই অপারেশনগুলিও একই লেনদেনের অধীনে ঘটবে।
রুডি
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.