DbContext কী এবং এটি কিভাবে কাজ করে

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Database Context এবং DbContext Class |
187
187

DbContext হল Entity Framework (EF) এর একটি অত্যন্ত গুরুত্বপূর্ণ ক্লাস, যা ডেটাবেসের সাথে আপনার অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন পরিচালনা করে। এটি ORM (Object-Relational Mapping) ব্যবস্থার একটি মূল উপাদান, যা আপনাকে অবজেক্ট (Objects) এবং রিলেশনাল ডেটাবেস টেবিলগুলির মধ্যে ডেটা ট্রান্সফার করতে সাহায্য করে। DbContext ক্লাসটি ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন করার জন্য ব্যবহৃত হয় এবং এটি ডেটাবেস টেবিলগুলির সাথে কাজ করতে DbSet সমূহকে ব্যবহার করে।


DbContext এর ভূমিকা

  1. ডেটাবেস কনফিগারেশন
    DbContext, ডেটাবেসের সংযোগ (connection) এবং কনফিগারেশন পরিচালনা করে। এটি ডেটাবেসে সংযোগ তৈরি করতে এবং ডেটাবেসে কার্যক্রম পরিচালনা করতে ব্যবহৃত হয়।
  2. ডেটাবেস টেবিলের প্রতিনিধিত্ব
    DbContext ক্লাসের মাধ্যমে আপনি আপনার ডেটাবেস টেবিলগুলোর প্রতিনিধিত্ব করতে পারবেন, যেখানে প্রতিটি DbSet একটি ডেটাবেস টেবিল বা ভিউ বা স্টোরড প্রোসিজারের প্রতিনিধিত্ব করে।
  3. CRUD অপারেশন
    DbContext এর মাধ্যমে আপনি ডেটাবেসে তথ্য যোগ করা, পড়া, পরিবর্তন করা এবং মুছে ফেলা (CRUD অপারেশন) করতে পারবেন।
  4. ডেটাবেস পরিবর্তন ট্র্যাকিং
    এটি অবজেক্টের স্টেট ট্র্যাক করে, অর্থাৎ, অবজেক্টের কোনো পরিবর্তন হলে (যেমন Insert, Update, Delete) DbContext সেই পরিবর্তনগুলো ডেটাবেসে প্রপাগেট (propagate) করতে সহায়তা করে।

DbContext কিভাবে কাজ করে

DbContext কাজ করার জন্য কিছু মূল উপাদান রয়েছে। চলুন এগুলির সাথে পরিচিত হওয়া যাক:


DbContext ক্লাস তৈরি করা

প্রথমে একটি DbContext ক্লাস তৈরি করতে হয়, যা আপনার ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করবে। নিচে একটি সাধারণ DbContext ক্লাসের উদাহরণ দেওয়া হলো:

public class MyDbContext : DbContext
{
    public DbSet<User> Users { get; set; }
    public DbSet<Product> Products { get; set; }

    // DbContext এর কনফিগারেশন এখানে করা যাবে
    protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
    {
        optionsBuilder.UseSqlServer("your_connection_string_here");
    }

    // মডেল কনফিগারেশন করতে OnModelCreating মেথডটি ওভাররাইড করা যায়
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        base.OnModelCreating(modelBuilder);
    }
}

এখানে:

  • DbSet: এটি একটি প্রপার্টি যা ডেটাবেস টেবিলের প্রতিনিধিত্ব করে। User এবং Product হল Entity ক্লাস যেগুলির মধ্যে ডেটা ম্যানেজ করা হবে।
  • OnConfiguring: এই মেথডের মাধ্যমে ডেটাবেসের সংযোগ স্ট্রিং কনফিগার করা হয়।
  • OnModelCreating: এই মেথডের মাধ্যমে মডেল কনফিগারেশন এবং সম্পর্ক নির্ধারণ করা হয়।

DbContext এর প্রধান কাজ

  1. ডেটাবেসের সাথে সংযোগ তৈরি করা
    DbContext ডেটাবেসের সাথে সংযোগ করতে UseSqlServer() বা অন্য ডাটাবেস ড্রাইভার ব্যবহার করে কনফিগার করা হয়। যখন আপনি DbContext ব্যবহার করেন, তখন এটি ডেটাবেসের সাথে স্বয়ংক্রিয়ভাবে সংযোগ স্থাপন করে।
  2. ডেটা প্রবাহ পরিচালনা করা (Tracking Changes)
    DbContext ক্লাসটি ডেটাবেসের মধ্যে পরিচালিত সব ডেটার স্টেট ট্র্যাক করে। অর্থাৎ, যদি আপনি কোনো Entity ক্লাসের একটি অবজেক্টে পরিবর্তন করেন, তাহলে DbContext সেই পরিবর্তনগুলো ডেটাবেসে সেভ করতে জানায়।

    উদাহরণ:

    var user = context.Users.First();
    user.Name = "New Name";
    context.SaveChanges();  // Save changes to database
    
  3. CRUD অপারেশন সম্পাদন করা
    DbContext এর মাধ্যমে Create, Read, Update, এবং Delete (CRUD) অপারেশন করা যায়। এর জন্য DbSet<TEntity> ব্যবহার করা হয়।
    • Create (ডেটা যোগ করা):

      var newUser = new User { Name = "John" };
      context.Users.Add(newUser);
      context.SaveChanges();
      
    • Read (ডেটা পড়া):

      var user = context.Users.FirstOrDefault(u => u.Name == "John");
      
    • Update (ডেটা আপডেট করা):

      var user = context.Users.First();
      user.Name = "Updated Name";
      context.SaveChanges();
      
    • Delete (ডেটা মুছে ফেলা):

      var user = context.Users.First();
      context.Users.Remove(user);
      context.SaveChanges();
      
  4. ডেটাবেসের আপডেট ট্র্যাক করা
    DbContext কোন Entity এর মধ্যে পরিবর্তন হলে সেগুলো ট্র্যাক করে এবং SaveChanges() মেথডের মাধ্যমে সেই পরিবর্তনগুলো ডেটাবেসে সেভ করে।

DbContext এর সাথে সম্পর্ক

DbContext এর সাথে সম্পর্ক (Relationships) ব্যবস্থাপনা করা যায়। যেমন, One-to-Many, Many-to-Many, এবং One-to-One সম্পর্ক।

public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    
    public ICollection<Order> Orders { get; set; } // One-to-Many relationship
}

public class Order
{
    public int Id { get; set; }
    public string Product { get; set; }
    public int UserId { get; set; }

    public User User { get; set; }  // Foreign key relationship
}

এখানে, User এবং Order এর মধ্যে One-to-Many সম্পর্ক রয়েছে।


DbContext Lifecycle

DbContext একটি সংক্ষিপ্ত লাইফসাইকেল থাকে, যেখানে এটি ইনস্ট্যানশিয়েট (instantiate) হওয়ার পর ডেটাবেসে ইন্টারঅ্যাক্ট করে এবং শেষ হলে ডিসপোজ (dispose) হয়ে যায়।

  • Scope: এটি সাধারণত একে Unit of Work হিসেবে ব্যবহার করা হয়, যেখানে একটিভ ডেটাবেস অপারেশন বা ট্রানজেকশন (transaction) এক DbContext এর মাধ্যমে পরিচালনা করা হয়।
  • Dispose: DbContext ইনস্ট্যান্সটি ব্যবহারের পর ডেটাবেস সংযোগটি বন্ধ করতে Dispose() মেথড কল করা হয়।

DbContext এর সুবিধা

  • Automated Change Tracking: DbContext স্বয়ংক্রিয়ভাবে Entity এর পরিবর্তন ট্র্যাক করে এবং SaveChanges() এর মাধ্যমে সেগুলো ডেটাবেসে সেভ করে।
  • CRUD অপারেশন সহজ করা: ডেটাবেসে CRUD অপারেশন করার জন্য অনেক কোড লেখার প্রয়োজন হয় না। DbSet<TEntity> ব্যবহার করে খুব সহজেই এসব অপারেশন করা যায়।
  • ডেটাবেস কনফিগারেশন এবং মডেল ম্যানেজমেন্ট: DbContext আপনাকে ডেটাবেস কনফিগারেশন এবং Entity গুলোর মডেল ম্যানেজমেন্ট সুবিধা প্রদান করে।

সারাংশ

DbContext হল Entity Framework এর একটি শক্তিশালী উপাদান, যা ডেটাবেসের সাথে আপনার অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন পরিচালনা করে। এটি ডেটাবেসের কনফিগারেশন, CRUD অপারেশন, এবং ডেটাবেস পরিবর্তন ট্র্যাকিংয়ের কাজ করে এবং ORM প্রযুক্তি ব্যবহারে ডেটাবেস অ্যাক্সেসকে খুব সহজ এবং কার্যকর করে তোলে।

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

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

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

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