DbContext হল Entity Framework (EF) এর একটি অত্যন্ত গুরুত্বপূর্ণ ক্লাস, যা ডেটাবেসের সাথে আপনার অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন পরিচালনা করে। এটি ORM (Object-Relational Mapping) ব্যবস্থার একটি মূল উপাদান, যা আপনাকে অবজেক্ট (Objects) এবং রিলেশনাল ডেটাবেস টেবিলগুলির মধ্যে ডেটা ট্রান্সফার করতে সাহায্য করে। DbContext ক্লাসটি ডেটাবেসে CRUD (Create, Read, Update, Delete) অপারেশন করার জন্য ব্যবহৃত হয় এবং এটি ডেটাবেস টেবিলগুলির সাথে কাজ করতে DbSet
সমূহকে ব্যবহার করে।
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);
}
}
এখানে:
User
এবং Product
হল Entity ক্লাস যেগুলির মধ্যে ডেটা ম্যানেজ করা হবে।UseSqlServer()
বা অন্য ডাটাবেস ড্রাইভার ব্যবহার করে কনফিগার করা হয়। যখন আপনি DbContext ব্যবহার করেন, তখন এটি ডেটাবেসের সাথে স্বয়ংক্রিয়ভাবে সংযোগ স্থাপন করে।ডেটা প্রবাহ পরিচালনা করা (Tracking Changes)
DbContext ক্লাসটি ডেটাবেসের মধ্যে পরিচালিত সব ডেটার স্টেট ট্র্যাক করে। অর্থাৎ, যদি আপনি কোনো Entity ক্লাসের একটি অবজেক্টে পরিবর্তন করেন, তাহলে DbContext সেই পরিবর্তনগুলো ডেটাবেসে সেভ করতে জানায়।
উদাহরণ:
var user = context.Users.First();
user.Name = "New Name";
context.SaveChanges(); // Save changes to database
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();
SaveChanges()
মেথডের মাধ্যমে সেই পরিবর্তনগুলো ডেটাবেসে সেভ করে।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 একটি সংক্ষিপ্ত লাইফসাইকেল থাকে, যেখানে এটি ইনস্ট্যানশিয়েট (instantiate) হওয়ার পর ডেটাবেসে ইন্টারঅ্যাক্ট করে এবং শেষ হলে ডিসপোজ (dispose) হয়ে যায়।
Unit of Work
হিসেবে ব্যবহার করা হয়, যেখানে একটিভ ডেটাবেস অপারেশন বা ট্রানজেকশন (transaction) এক DbContext এর মাধ্যমে পরিচালনা করা হয়।Dispose()
মেথড কল করা হয়।SaveChanges()
এর মাধ্যমে সেগুলো ডেটাবেসে সেভ করে।DbSet<TEntity>
ব্যবহার করে খুব সহজেই এসব অপারেশন করা যায়।DbContext হল Entity Framework এর একটি শক্তিশালী উপাদান, যা ডেটাবেসের সাথে আপনার অ্যাপ্লিকেশনের ইন্টারঅ্যাকশন পরিচালনা করে। এটি ডেটাবেসের কনফিগারেশন, CRUD অপারেশন, এবং ডেটাবেস পরিবর্তন ট্র্যাকিংয়ের কাজ করে এবং ORM প্রযুক্তি ব্যবহারে ডেটাবেস অ্যাক্সেসকে খুব সহজ এবং কার্যকর করে তোলে।
common.read_more