Wednesday, November 14, 2018

পার্ট 4 - Customizing table, column and foreign key column names when using entity framework code first approach

আমরা এই আর্টিকেলে Entity framework এর code first approach use করার সময় কিভাবে Database table এর customization করতে হয়, Database table এর column এবং foreign key column names এর customization করতে হয় সেগুলো নিয়ে discuss করবো। এই আর্টিকেলটি পার্ট 3 এর continuation, তাই এই আর্টিকেলটি শুরু কারার আগে পার্ট 3 তে একবার চোখবুলিয়ে আসুন।


পার্ট 3 তে আমরা Entity framework এর code first approach use করে Departments এবং Employees tables তৈরি করার ব্যাপারে discuss করছিলাম।


Entity Framework নিচের এই Employees table টি তৈরি করেছিলো।
Customizing foreign key column name using Entity Framework Code first approach
Customizing foreign key column name using Entity Framework Code first approach 
এই টেবিলের Department_Id column এর নামের মধ্যে একটা underscore character আছে, এখন আমরা এই column এর নাম থেকে underscore character টি বাদ দিতে চাই, মানে Department_Id এর পরিবর্তে DepartmenId নামে column তৈরি করতে চাই।

Entity Framework উপরের Employees টেবিলটি তৈরি করেছিলো নিচের এই Employee class এর উপর basis করে যেই custom class টা আমরাই তৈরি করে দিয়েছিলাম
public class Employee
{
    public int Id { getset; }
    public string FirstName { getset; }
    public string LastName { getset; }
    public string Gender { getset; }
    public int Salary { getset; }
    public Department Department { getset; }
}


আমরা যেহেতু Departmen_Id নামের foreignkey কে change করে DepartmenId তে পরিণত করতে চাই, সেহেতু আমদের ঐ Employee class টা নিচের মতোকরে modify করতে হবে। এখানে System.ComponentModel.DataAnnotations.Schema namespace এর ForeignKey attribute টা use করা হয়েছে
public class Employee
{
    public int Id { getset; }
    public string FirstName { getset; }
    public string LastName { getset; }
    public string Gender { getset; }
    public int Salary { getset; }
    public int DepartmentId { getset; }
    [ForeignKey("DepartmentId")]
    public Department Department { getset; }
}

এখন solution টা Rebuild করে run করে দেখুন। নিচের মতো একটা error আসার কথা

The model backing the 'EmployeeDBContext' context has changed since the database was created. Consider using Code First Migrations to update the database (http://go.microsoft.com/fwlink/?LinkId=238269)
InvalidOperationException
InvalidOperationException
এই error এর reason কি, এবং কিভাবে এই error টা fix করতে হয় তা আমরা পরবর্তী আর্টিকেলে দেখবো । এখন কার জন্য আমরা SQL Server Management Studio তে গিয়ে আমাদের যে Sample Database টা তৈরি কারা আছে সেটাকে delete করে দিয়ে আমদের solution টা আবার run করবো। একটা blank Webform display হবে browser এ, এবং SQL Server Management Studio তে গিয়ে check করলে আমরা দেখবো যে Department_Id column টা DepartmentId তে পরিনত হয়েছে।
Influencing foreign key column naming in EF code first
Influencing foreign key column naming in EF code first
একই ভাবে table এর নাম customize করতে চাইলে Table attribute use করতে হবে, আর column এর নাম customize করতে চাইলে Column attribute use করতে হবে। যেমন ধরুন আমরা Employees table টা tblEmployees table এ, এবং FirstName column টা First_Name column এ পরিণত করতে চাই তাহলে আমদের Employee class কে নিচের মতো করে modify করতে হবে

[Table("tblEmployees")]
public class Employee
{
    public int Id { getset; }
    [Column("First_Name")]
    public string FirstName { getset; }
    public string LastName { getset; }
    public string Gender { getset; }
    public int Salary { getset; }
    public int DepartmentId { getset; }
    [ForeignKey("DepartmentId")]
    public Department Department { getset; }
}

Entity Framework তখন নিচের মতো table generate করবে( Notice the table name and First_Name column )।
Change Table and Column Name Mappings Entity Framework
Change Table and Column Name Mappings Entity Framework


উপরের explanations আরও ভালভাবে বুঝতে এই video টি একবার দেখে আসুন। ধন্যবাদ।।

No comments:

Post a Comment