Entity Framework (EF) এ Data Seeding হলো একটি প্রক্রিয়া যার মাধ্যমে ডেটাবেসে প্রাথমিক বা স্ট্যাটিক ডেটা ইনসার্ট করা হয়, যেমন ডিফল্ট বা অপরিবর্তনীয় ডেটা। EF ডেটাবেসে ডেটা সিড করতে দুইটি প্রধান পদ্ধতি ব্যবহার করা যায়: Automatic Seeding এবং Manual Seeding। এখানে আমরা এই দুটি পদ্ধতি এবং তাদের ব্যবহারের ধরন সম্পর্কে আলোচনা করব।
Automatic Data Seeding বা স্বয়ংক্রিয় ডেটা সিডিং হল এমন একটি প্রক্রিয়া যেখানে Entity Framework নিজে থেকেই প্রাথমিক ডেটা সিড করে, সাধারণত ডেটাবেস মাইগ্রেশন করার সময়। EF আপনাকে বিভিন্ন মডেল (Entity Class) এর জন্য ডিফল্ট ডেটা সরবরাহ করতে সক্ষম করে, এবং এটি আপনার মডেল ক্লাসের OnModelCreating
মেথডের মাধ্যমে করা হয়। EF মাইগ্রেশন সম্পাদন করার সময় স্বয়ংক্রিয়ভাবে ডেটাবেসে এই ডেটা সিড করা হয়।
ধরা যাক, আমাদের একটি Student
Entity রয়েছে এবং আমরা ডেটাবেসে প্রাথমিকভাবে কয়েকটি ছাত্রের তথ্য সিড করতে চাই। এর জন্য OnModelCreating
মেথডে Seed Data যোগ করা হবে।
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
base.OnModelCreating(modelBuilder);
// Automatic Data Seeding
modelBuilder.Entity<Student>().HasData(
new Student { Id = 1, Name = "John Doe", Age = 20 },
new Student { Id = 2, Name = "Jane Smith", Age = 22 }
);
}
}
এখানে:
HasData()
মেথড ব্যবহার করা হয়েছে যাতে Student
Entity এর জন্য কিছু প্রাথমিক ডেটা সিড করা যায়।এটি Automatic Seeding হিসাবে কাজ করে, যেখানে EF নিজে থেকেই এই ডেটাগুলি ডেটাবেসে যোগ করবে।
Automatic Data Seeding সম্পাদনের জন্য আপনাকে মাইগ্রেশন করতে হবে:
নতুন মাইগ্রেশন তৈরি করুন:
dotnet ef migrations add SeedInitialData
ডেটাবেস আপডেট করুন:
dotnet ef database update
এখন আপনার ডেটাবেসে Student
টেবিলে স্বয়ংক্রিয়ভাবে প্রাথমিক ডেটা সিড হয়ে যাবে।
Manual Data Seeding বা ম্যানুয়াল ডেটা সিডিং হল এমন একটি পদ্ধতি যেখানে ডেটা সিডিং কার্যটি আপনার হাতে থাকে এবং আপনি যখন ইচ্ছা তখন সিড করতে পারেন। সাধারণত এটি তখন ব্যবহৃত হয় যখন আপনাকে কোন নির্দিষ্ট সময়ে ডেটা সিড করতে হবে, বা প্রাথমিক ডেটা সিডিং এর জন্য আরও বেশি কাস্টমাইজেশন প্রয়োজন হয়।
ধরা যাক, আপনি ডেটাবেসে কিছু ডিফল্ট ডেটা সিড করতে চান, কিন্তু সেটা স্বয়ংক্রিয়ভাবে নয়, আপনি যখন চাইবেন তখন।
public class SchoolContext : DbContext
{
public DbSet<Student> Students { get; set; }
public void SeedData()
{
// Manually adding data
if (!Students.Any())
{
Students.AddRange(
new Student { Name = "John Doe", Age = 20 },
new Student { Name = "Jane Smith", Age = 22 }
);
SaveChanges();
}
}
}
এখানে:
SeedData()
মেথড তৈরি করা হয়েছে, যা ম্যানুয়ালি ডেটা সিড করার জন্য ব্যবহৃত হবে।Students.Any()
চেক করে যে Students
টেবিলটি খালি আছে কি না, যদি খালি থাকে, তবে ডেটা সিড করা হবে।SaveChanges()
মেথডটি ডেটাবেসে পরিবর্তন সেভ করবে।আপনি যখন আপনার অ্যাপ্লিকেশন চালাবেন, তখন আপনি SeedData()
মেথডটি কল করতে পারেন:
using (var context = new SchoolContext())
{
context.SeedData();
}
এখানে, ম্যানুয়ালি ডেটা সিড করতে SeedData()
মেথড কল করা হয়েছে।
OnModelCreating
মেথডে HasData()
ব্যবহার করে ডেটা সিড করা হয়।DbContext
ব্যবহার করে সিডিং করতে পারেন।Entity Framework-এ Automatic Data Seeding এবং Manual Data Seeding দুটি পদ্ধতি ব্যবহার করে আপনি আপনার ডেটাবেসে প্রাথমিক ডেটা সিড করতে পারেন। Automatic Seeding সাধারণত মাইগ্রেশন চলাকালে EF দ্বারা স্বয়ংক্রিয়ভাবে সম্পন্ন হয়, যখন Manual Seeding ডেভেলপার দ্বারা কাস্টমাইজডভাবে পরিচালিত হয় এবং প্রয়োজনে ম্যানুয়ালি চালু করা যায়।
common.read_more