OnModelCreating মেথড দিয়ে Custom Configuration

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

OnModelCreating মেথডটি DbContext ক্লাসে একটি বিশেষ মেথড, যা Entity Framework এর মাধ্যমে মডেল কনফিগারেশন এবং টেবিল সম্পর্কিত বিভিন্ন কাস্টমাইজেশন সেট করার জন্য ব্যবহৃত হয়। এই মেথডের মধ্যে আপনি Fluent API ব্যবহার করে Entity গুলোর মধ্যে সম্পর্ক, কাস্টম মডেল কনফিগারেশন, এবং অন্যান্য ডেটাবেস কনফিগারেশন সেট করতে পারেন।


OnModelCreating মেথডে Custom Configuration কিভাবে কাজ করে

১. OnModelCreating মেথড এর ব্যাখ্যা

OnModelCreating মেথডটি DbContext ক্লাসের একটি অংশ যা Entity Framework কে মডেল কনফিগারেশন নির্ধারণ করতে সাহায্য করে। এটি এমন একটি জায়গা যেখানে আপনি টেবিলের কাঠামো, কলামের ডেটা টাইপ, প্রাইমারি কি, ফরেন কি এবং অন্যান্য কাস্টম কনফিগারেশন সেট করতে পারেন।

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    base.OnModelCreating(modelBuilder);
    // Custom Configuration
}

২. Fluent API ব্যবহার করে কাস্টম কনফিগারেশন

Fluent API হল Entity Framework এর একটি শক্তিশালী বৈশিষ্ট্য, যা মডেল কনফিগারেশন করতে সাহায্য করে। OnModelCreating মেথডে আপনি Fluent API এর মাধ্যমে টেবিলের গঠন, কনস্ট্রেইন্ট, রিলেশনশিপ ইত্যাদি কাস্টমাইজ করতে পারবেন।

কিছু সাধারণ কাস্টম কনফিগারেশন:

৩. প্রাইমারি কি কনফিগার করা

যখন Entity Class এ প্রাইমারি কি ডিফাইন করা না থাকে, তখন আপনি Fluent API এর মাধ্যমে এটি কনফিগার করতে পারেন।

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .HasKey(s => s.StudentId);
}

এখানে, HasKey() মেথডটি StudentId ফিল্ডকে প্রাইমারি কি হিসেবে কনফিগার করছে।

৪. ফরেন কি কনফিগার করা

ফরেন কি সম্পর্ক Entity গুলোর মধ্যে কনফিগার করতে Fluent API ব্যবহার করা যায়। উদাহরণস্বরূপ, যদি Student ক্লাসে Course নামে একটি ফরেন কি সম্পর্ক থাকে, তাহলে এটি কনফিগার করতে হবে।

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .HasOne(s => s.Course)
        .WithMany(c => c.Students)
        .HasForeignKey(s => s.CourseId);
}

এখানে, HasOne() এবং WithMany() মেথডগুলি ব্যবহার করে Student এবং Course ক্লাসের মধ্যে সম্পর্ক স্থাপন করা হয়েছে। এছাড়া, CourseId ফরেন কি হিসেবে ব্যবহার করা হয়েছে।

৫. কাস্টম কনস্ট্রেইন্ট সংযোজন

যদি আপনি Entity ফিল্ডের জন্য কিছু কাস্টম কনস্ট্রেইন্ট দিতে চান, যেমন Age ফিল্ডে একটি নির্দিষ্ট মানের সীমা, তাহলে তা Fluent API এর মাধ্যমে কনফিগার করা যাবে।

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .Property(s => s.Age)
        .HasDefaultValue(18)
        .IsRequired();
}

এখানে, Age প্রপার্টির জন্য ডিফল্ট মান 18 নির্ধারণ করা হয়েছে এবং এটি বাধ্যতামূলক (required) করা হয়েছে।

৬. টেবিলের নাম পরিবর্তন করা

আপনি টেবিলের নাম কাস্টমাইজ করতে Fluent API ব্যবহার করতে পারেন। উদাহরণস্বরূপ, যদি আপনি Student ক্লাসের জন্য টেবিলের নাম পরিবর্তন করতে চান, তাহলে এটি করতে পারেন:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .ToTable("Tbl_Student");
}

এখানে, Student Entity এর জন্য টেবিলের নাম Tbl_Student করা হয়েছে।

৭. কাস্টম ইন্ডেক্স তৈরি করা

Entity Framework দিয়ে আপনি Entity গুলোর জন্য কাস্টম ইন্ডেক্সও তৈরি করতে পারেন। উদাহরণস্বরূপ, যদি আপনি Name ফিল্ডের জন্য একটি ইন্ডেক্স তৈরি করতে চান:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .HasIndex(s => s.Name)
        .HasName("Index_Name");
}

এখানে, Name ফিল্ডের জন্য একটি ইন্ডেক্স তৈরি করা হয়েছে এবং ইন্ডেক্সের নাম দেওয়া হয়েছে Index_Name

৮. এনাম (Enum) টাইপের প্রপার্টি কনফিগার করা

যদি আপনার Entity তে কোনো Enum টাইপের প্রপার্টি থাকে, আপনি Fluent API এর মাধ্যমে এটি কনফিগার করতে পারেন:

public enum Gender
{
    Male,
    Female,
    Other
}

public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public Gender Gender { get; set; }
}

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .Property(s => s.Gender)
        .HasConversion<string>();
}

এখানে, Gender প্রপার্টি Enum টাইপে ডিফাইন করা হয়েছে এবং এটি string হিসেবে ডেটাবেসে সেভ করা হবে।


সারাংশ

OnModelCreating মেথড দিয়ে Entity Framework Core এ আপনি বিভিন্ন ধরনের কাস্টম কনফিগারেশন করতে পারেন। Fluent API এর মাধ্যমে আপনি ডেটাবেসের টেবিলের গঠন, প্রাইমারি কি, ফরেন কি, কাস্টম কনস্ট্রেইন্ট, টেবিলের নাম, ইন্ডেক্স এবং এনাম প্রপার্টি সহ নানা কনফিগারেশন করতে পারেন। এই কাস্টম কনফিগারেশনগুলি ডেটাবেসের কার্যকারিতা এবং পারফরম্যান্স উন্নত করতে সহায়তা করে।

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

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

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

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