Foreign Key এবং Primary Key Configuration

Microsoft Technologies - এন্টিটি ফ্রেমওয়র্ক (Entity Framework) Entity Relationships এবং Navigational Properties |
255
255

Entity Framework (EF) এ Primary Key এবং Foreign Key কনফিগারেশন অত্যন্ত গুরুত্বপূর্ণ, কারণ এগুলি ডেটাবেস টেবিলগুলোর মধ্যে সম্পর্ক স্থাপন করে এবং ডেটাবেসের এককরণ এবং অখণ্ডতা (data integrity) নিশ্চিত করে। Primary Key টেবিলের প্রতিটি রেকর্ডের জন্য একক চিহ্নিতকারী হিসেবে কাজ করে, এবং Foreign Key এক টেবিলের রেকর্ডকে অন্য টেবিলের সাথে যুক্ত করে।

এই টিউটোরিয়ালে আমরা দেখব কিভাবে EF-এ Primary Key এবং Foreign Key কনফিগার করা হয়।


Primary Key Configuration

Primary Key একটি টেবিলের প্রতিটি রেকর্ডকে ইউনিকভাবে চিহ্নিত করতে ব্যবহৃত হয়। EF-এ, প্রতিটি Entity ক্লাসের মধ্যে একটি প্রপার্টি যা Primary Key হিসেবে কাজ করে তা কনফিগার করা হয়। EF স্বয়ংক্রিয়ভাবে Id বা {ClassName}Id প্রপার্টিকে Primary Key হিসেবে শনাক্ত করে, তবে আপনি নিজে কাস্টম প্রপার্টি দিয়ে এই কনফিগারেশন করতে পারেন।

উদাহরণ:

public class Student
{
    [Key]  // Primary Key কনফিগারেশন
    public int StudentId { get; set; }
    
    public string Name { get; set; }
    public int Age { get; set; }
}

এখানে:

  • StudentId প্রপার্টি Primary Key হিসেবে কাজ করছে।
  • [Key] Data Annotation ব্যবহার করে StudentId কে Primary Key হিসেবে চিহ্নিত করা হয়েছে।

Fluent API ব্যবহার করে Primary Key কনফিগারেশন:

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .HasKey(s => s.StudentId);  // Fluent API দিয়ে Primary Key কনফিগারেশন
}

এখানে:

  • HasKey(s => s.StudentId) Fluent API ব্যবহার করে StudentId কে Primary Key হিসেবে কনফিগার করা হয়েছে।

Foreign Key Configuration

Foreign Key এক টেবিলের রেকর্ডকে অন্য টেবিলের রেকর্ডের সাথে সম্পর্কিত করে। EF তে Foreign Key কনফিগারেশন করতে হলে, দুটি টেবিলের মধ্যে সম্পর্ক স্থাপন করতে হয়, যেমন এক Student অনেক Course পড়তে পারে, বা একটি Order একটি Customer এর সাথে সম্পর্কিত হতে পারে।

EF তে Foreign Key কনফিগারেশন করার জন্য আপনি:

  • প্রপার্টি নামকরণের কনভেনশন (যেমন, {ClassName}Id)
  • Data Annotations
  • Fluent API ব্যবহার করতে পারেন।

উদাহরণ (Foreign Key Data Annotation):

ধরা যাক, আমাদের একটি Student এবং Course টেবিল আছে এবং আমরা চাচ্ছি, Student টেবিলের মধ্যে একটি CourseId প্রপার্টি থাকবে, যা Foreign Key হিসেবে কাজ করবে।

public class Student
{
    public int StudentId { get; set; }
    public string Name { get; set; }
    public int CourseId { get; set; }  // Foreign Key
    
    // Navigation Property
    public Course Course { get; set; }  // Navigation to Course
}

public class Course
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }
    
    // Navigation Property
    public ICollection<Student> Students { get; set; }  // One-to-Many relationship
}

এখানে:

  • CourseId একটি Foreign Key হিসেবে Student টেবিলের মধ্যে যুক্ত হয়েছে।
  • Course একটি Navigation Property, যা Course টেবিলের সাথে সম্পর্ক স্থাপন করে।

Fluent API ব্যবহার করে Foreign Key কনফিগারেশন:

আপনি Fluent API দিয়ে আরও কাস্টম ফ্লেক্সিবিলিটি সহ Foreign Key কনফিগার করতে পারেন।

protected override void OnModelCreating(ModelBuilder modelBuilder)
{
    modelBuilder.Entity<Student>()
        .HasOne(s => s.Course)  // One-to-Many Relationship
        .WithMany(c => c.Students)
        .HasForeignKey(s => s.CourseId)  // CourseId is the Foreign Key
        .OnDelete(DeleteBehavior.Restrict);  // Define delete behavior
}

এখানে:

  • HasOne(s => s.Course) দিয়ে Student এবং Course এর মধ্যে সম্পর্ক স্থাপন করা হয়েছে।
  • WithMany(c => c.Students) দিয়ে এক Course অনেক Student-কে সম্পর্কিত করছে।
  • HasForeignKey(s => s.CourseId) দিয়ে CourseId কে Foreign Key হিসেবে কনফিগার করা হয়েছে।
  • OnDelete(DeleteBehavior.Restrict) দিয়ে Cascade Delete বন্ধ করে দেওয়া হয়েছে, অর্থাৎ Course ডিলিট করলে Student ডিলিট হবে না।

Foreign Key Relationship Types

EF তে Foreign Key সম্পর্কের তিনটি প্রধান টাইপ রয়েছে:

  1. One-to-One Relationship: এক টেবিলের এক রেকর্ড অন্য টেবিলের এক রেকর্ডের সাথে সম্পর্কিত।
  2. One-to-Many Relationship: এক টেবিলের এক রেকর্ড অনেক রেকর্ডের সাথে সম্পর্কিত।
  3. Many-to-Many Relationship: এক টেবিলের একাধিক রেকর্ড অন্য টেবিলের একাধিক রেকর্ডের সাথে সম্পর্কিত।

One-to-One Relationship:

public class Employee
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }
    public int ProfileId { get; set; }

    // Navigation Property
    public Profile Profile { get; set; }  // One-to-One relationship
}

public class Profile
{
    public int ProfileId { get; set; }
    public string Bio { get; set; }

    // Navigation Property
    public Employee Employee { get; set; }  // One-to-One relationship
}

One-to-Many Relationship:

public class Department
{
    public int DepartmentId { get; set; }
    public string DepartmentName { get; set; }

    // Navigation Property
    public ICollection<Employee> Employees { get; set; }  // One-to-Many relationship
}

public class Employee
{
    public int EmployeeId { get; set; }
    public string Name { get; set; }
    public int DepartmentId { get; set; }  // Foreign Key

    // Navigation Property
    public Department Department { get; set; }
}

Many-to-Many Relationship:

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

    // Navigation Property
    public ICollection<Course> Courses { get; set; }  // Many-to-Many relationship
}

public class Course
{
    public int CourseId { get; set; }
    public string CourseName { get; set; }

    // Navigation Property
    public ICollection<Student> Students { get; set; }
}

Conclusion

Primary Key এবং Foreign Key কনফিগারেশন Entity Framework-এ ডেটাবেসের কাঠামো এবং সম্পর্কের সঠিক পরিচালনা নিশ্চিত করে। ডেটাবেসে সঠিক সম্পর্ক স্থাপন করে, EF আমাদের CRUD অপারেশনগুলিকে আরো কার্যকরী ও নিরাপদ করে তোলে। Data Annotations এবং Fluent API উভয়ই শক্তিশালী কনফিগারেশন টুল হিসেবে কাজ করে, যা ডেটাবেস সম্পর্কের জন্য নমনীয়তা এবং কাস্টমাইজেশন প্রদান করে।

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

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

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

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