ট্রানজেকশন (Transactions) ব্যবহারের পদ্ধতি

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Entity Framework এ CRUD অপারেশন (CRUD Operations in Entity Framework) |
212
212

Entity Framework (EF) ট্রানজেকশন ব্যবহারের জন্য একটি শক্তিশালী মেকানিজম সরবরাহ করে, যা আপনাকে একাধিক ডেটাবেস অপারেশনকে একত্রে একটানা কার্যকরী করতে সাহায্য করে। ট্রানজেকশন ব্যবহারের মাধ্যমে আপনি নিশ্চিত করতে পারেন যে, একাধিক অপারেশন একযোগভাবে সফলভাবে সম্পন্ন হচ্ছে, অন্যথায় কোনো একটি অপারেশন ব্যর্থ হলে, পূর্বের সমস্ত অপারেশন রোলব্যাক (rollback) করা হবে, যাতে ডেটাবেসের অখণ্ডতা বজায় থাকে।


ট্রানজেকশন কী এবং কেন প্রয়োজন

ট্রানজেকশন হল একটি অ্যাটমিক ইউনিট যা ডেটাবেসে এক বা একাধিক কার্যক্রম সম্পাদিত করে। একটি ট্রানজেকশনের প্রধান উদ্দেশ্য হল ডেটাবেসের অবস্থা সঠিক এবং অখণ্ড রাখা। এতে ৪টি মূল বৈশিষ্ট্য থাকে, যা ACID (Atomicity, Consistency, Isolation, Durability) নামক গুণাবলী হিসেবে পরিচিত।

  • Atomicity: একটি ট্রানজেকশনে সমস্ত কার্যক্রম একত্রে সফলভাবে সম্পন্ন হওয়া উচিত, বা সব কিছু বাতিল হয়ে যেতে হবে।
  • Consistency: ডেটাবেসের শুরুর এবং শেষের অবস্থার মধ্যে সঙ্গতি থাকতে হবে।
  • Isolation: একাধিক ট্রানজেকশন একে অপরকে হস্তক্ষেপ না করে কাজ করতে পারবে।
  • Durability: একবার ট্রানজেকশন সফলভাবে সম্পন্ন হলে, সেই পরিবর্তন স্থায়ীভাবে ডেটাবেসে সঞ্চিত হবে।

Entity Framework এ ট্রানজেকশন ব্যবহারের পদ্ধতি

Entity Framework এ ট্রানজেকশন ব্যবহারের জন্য মূলত DbContext ব্যবহার করা হয়। EF ডিফল্টভাবে প্রতি SaveChanges() কলের সময় একটি ট্রানজেকশন শুরু করে, কিন্তু আপনি যদি নিজস্ব ট্রানজেকশন নিয়ন্ত্রণ করতে চান, তবে DbContext.Database.BeginTransaction() মেথড ব্যবহার করে এটি পরিচালনা করতে পারেন।

১. ডিফল্ট ট্রানজেকশন (Default Transaction) ব্যবহার করা

যখন আপনি SaveChanges() মেথড কল করেন, EF স্বয়ংক্রিয়ভাবে একটি ট্রানজেকশন শুরু করে। যদি সব অপারেশন সফল হয়, তবে ট্রানজেকশন কমিট (commit) হয়, এবং যদি কোনো অপারেশন ব্যর্থ হয়, তবে সমস্ত পরিবর্তন রোলব্যাক (rollback) করা হয়।

using (var context = new YourDbContext())
{
    var entity1 = new Entity1 { Property1 = "Value1" };
    var entity2 = new Entity2 { Property2 = "Value2" };
    
    context.Entity1s.Add(entity1);
    context.Entity2s.Add(entity2);

    // SaveChanges() স্বয়ংক্রিয়ভাবে ট্রানজেকশন পরিচালনা করবে
    context.SaveChanges();
}

২. নিজস্ব ট্রানজেকশন শুরু করা (Explicit Transactions)

আপনি যদি একটি ট্রানজেকশনের মধ্যে একাধিক ডেটাবেস অপারেশন করতে চান, তাহলে আপনাকে BeginTransaction ব্যবহার করতে হবে। এই পদ্ধতিতে, আপনি ট্রানজেকশন শুরু, কমিট, এবং রোলব্যাক পরিচালনা করতে পারবেন।

using (var context = new YourDbContext())
{
    // Explicitly start a transaction
    using (var transaction = context.Database.BeginTransaction())
    {
        try
        {
            var entity1 = new Entity1 { Property1 = "Value1" };
            var entity2 = new Entity2 { Property2 = "Value2" };
            
            context.Entity1s.Add(entity1);
            context.Entity2s.Add(entity2);

            // Save changes within the transaction
            context.SaveChanges();

            // Commit the transaction
            transaction.Commit();
        }
        catch (Exception)
        {
            // Rollback the transaction if any exception occurs
            transaction.Rollback();
            throw;
        }
    }
}

৩. Asynchronous ট্রানজেকশন ব্যবহারের পদ্ধতি

Asynchronous অপারেশনেও আপনি ট্রানজেকশন পরিচালনা করতে পারেন। SaveChangesAsync() এবং BeginTransactionAsync() মেথড ব্যবহার করে আপনি ব্যাকগ্রাউন্ডে ট্রানজেকশন পরিচালনা করতে পারেন।

using (var context = new YourDbContext())
{
    // Explicitly start a transaction
    using (var transaction = await context.Database.BeginTransactionAsync())
    {
        try
        {
            var entity1 = new Entity1 { Property1 = "Value1" };
            var entity2 = new Entity2 { Property2 = "Value2" };
            
            context.Entity1s.Add(entity1);
            context.Entity2s.Add(entity2);

            // Save changes asynchronously within the transaction
            await context.SaveChangesAsync();

            // Commit the transaction
            await transaction.CommitAsync();
        }
        catch (Exception)
        {
            // Rollback the transaction if any exception occurs
            await transaction.RollbackAsync();
            throw;
        }
    }
}

৪. TransactionScope ব্যবহার করে ট্রানজেকশন পরিচালনা

যদি আপনি একাধিক ডেটাবেসে বা ডিস্ট্রিবিউটেড ট্রানজেকশন পরিচালনা করতে চান, তবে TransactionScope ব্যবহার করা যেতে পারে। এটি একাধিক DbContext বা বিভিন্ন সিস্টেমে ডেটাবেস ট্রানজেকশন পরিচালনার জন্য উপযুক্ত।

using (var scope = new TransactionScope())
{
    using (var context1 = new YourDbContext())
    {
        context1.Entity1s.Add(new Entity1 { Property1 = "Value1" });
        context1.SaveChanges();
    }
    
    using (var context2 = new AnotherDbContext())
    {
        context2.Entity2s.Add(new Entity2 { Property2 = "Value2" });
        context2.SaveChanges();
    }

    // Complete the transaction
    scope.Complete();
}

সারাংশ

Entity Framework এ ট্রানজেকশন ব্যবহারের মাধ্যমে আপনি একাধিক ডেটাবেস অপারেশনকে একত্রে সফলভাবে সম্পন্ন করতে পারেন, অথবা কোনো একটি অপারেশন ব্যর্থ হলে পুরো প্রক্রিয়া রোলব্যাক করতে পারেন। আপনি DbContext.Database.BeginTransaction() বা TransactionScope ব্যবহার করে স্বতন্ত্র ট্রানজেকশন তৈরি করতে পারেন, যা ডেটাবেসের অবস্থা অখণ্ড রাখার জন্য খুবই গুরুত্বপূর্ণ। EF ডিফল্টভাবে ট্রানজেকশন পরিচালনা করে, তবে আপনি প্রয়োজন অনুসারে এটি কাস্টমাইজ করতে পারেন।

common.content_added_by
টপ রেটেড অ্যাপ

স্যাট অ্যাকাডেমী অ্যাপ

আমাদের অল-ইন-ওয়ান মোবাইল অ্যাপের মাধ্যমে সীমাহীন শেখার সুযোগ উপভোগ করুন।

ভিডিও
লাইভ ক্লাস
এক্সাম
ডাউনলোড করুন
Promotion