Here we will learn TPH(Table Per Hierarchy) Inheritance in Code first approach Before
this learn this TPH With DataBase Approach.
Step1: Go to your
application and Add a class (Student.cs) file to your application.
And make this class as Abstract class.
namespace EntityInheritance
{
public abstract class Student
{
public int ID { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
public string Gender { get; set; }
}
}
|
Step 2: Add a another class
file to the project, and give Name it CollageStudent.cs. write below
code.
namespace EntityInheritance
{
public class CollageStudent: Student
{
public string StudentCollageName { get; set; }
public string StudentCollageBranch { get; set; }
}
}
|
Step 4: Add a one more class file to the project from School student. Name it SchoolStudent.cs.
namespace EntityInheritance
{
public class SchoolStudent : Student
{
public string StudentSchoolName { get; set; }
public string StudentSchoolclass { get; set; }
}
}
|
Step 5: Add a class file for DBContext. Name it StudentDBContext.cs. And write below code.
using System.Data.Entity;
namespace EntityInheritance
{
public class StudentDBContext : DbContext
{
public DbSet<Student> Students { get; set; }
}
}
|
Step 6: Add the database connection string in web.config file.
<connectionStrings>
<add name="StudentDBContext"
connectionString="server=.; database=EntityInheritance; integrated security=SSPI;"
providerName="System.Data.SqlClient" />
</connectionStrings>
|
Step 7: Add a webform to the project.Write below code
<div style="font-family: Arial">
<asp:Button ID=" Button1" runat="server" Text="All Student Information"
onclick="Button1_Click" />
<asp:Button ID=" Button2" runat="server" Text="Collage Student Information"
onclick="Button2_Click" />
<asp:Button ID=" Button3" runat="server" Text="School Student Information"
onclick="Button3_Click" />
<asp:GridView ID="GridView1" runat="server">
</asp:GridView>
<asp:Button ID="btnAddcollageStudent" runat="server"
Text="Add Collage student" onclick="
btnAddcollageStudent _Click" />
<br />
<br />
<asp:Button ID=" btnAddSchoolStudent " runat="server"
Text=" Add School Student " onclick="
btnAddSchoolStudent _Click" />
</div>
|
Step 8: Copy the following code in the code-behind file.
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
namespace EntityInheritances
{
public partial class WebForm1 : System.Web.UI.Page
{
protected void Button1_Click(object sender, EventArgs e)
{
GridView1.DataSource =
ConvertListToDataTable(
studentDBContext.Students.ToList());
GridView1.DataBind();
}
protected void Button2_Click(object sender, EventArgs e)
{
GridView1.DataSource = studentDBContext.Students
.OfType<CollageStudent>().ToList();
GridView1.DataBind();
}
protected void Button3_Click(object sender, EventArgs e)
{
GridView1.DataSource =
studentDBContext.Students
.OfType<SchoolStudent>().ToList();
GridView1.DataBind();
}
private DataTable ConvertListToDataTable (List<Student> students)
{
DataTable dt = new DataTable();
dt.Columns.Add("ID");
dt.Columns.Add("FirstName");
dt.Columns.Add("LastName");
dt.Columns.Add("Gender");
dt.Columns.Add("SchoolStudentName");
dt.Columns.Add("SchoolStudentClass");
dt.Columns.Add("CollageStudentName");
dt.Columns.Add("CollageStudentBranch");
dt.Columns.Add("Type");
foreach (Student _student in students)
{
DataRow dr = dt.NewRow();
dr["ID"] = _student.ID;
dr["FirstName"] = _student.FirstName;
dr["LastName"] = _student.LastName;
dr["Gender"] = _student.Gender;
if (_student is CollageStudent)
{
dr["CollageStudentName"] =
((CollageStudent) _student). CollageStudentName;
dr["CollageStudentBranch"] =
((CollageStudent) _student).CollageStudentBranch;
dr["Type"] = "CollageStudent";
}
else
{
dr["SchoolStudentName "] = ((SchoolStudent) _student).SchoolStudentName;
dr["SchoolStudentClass
"] = ((SchoolStudent) _student).SchoolStudentBranch;
dr["Type"] = "SchoolStudent";
}
dt.Rows.Add(dr);
}
return dt;
}
}
}
protected void btnAddCollageStudent_Click(object sender, EventArgs e)
{
CollageStudent collagestudent = new CollageStudent
{
FirstName = " Munesh",
LastName = "Sharma",
Gender = "Male"
CollageStudentName = "VIT"
CollageStudentBranch= "IT"
};
StudentDBContext studentDB = new StudentDBContext ();
studentDB.Students.Add(collagestudent);
studentDB.SaveChanges();
}
protected void btnAddSchoolStudent_Click(object sender, EventArgs e)
{
SchoolStudent schoolstudent = new SchoolStudent
{
FirstName = " Rahul",
LastName = "Sharma",
Gender = "Male"
CollageStudentName = "KVM"
CollageStudentBranch= "Seven"
};
StudentDBContext studentDB = new StudentDBContext ();
studentDB.Students.Add(schoolstudent);
studentDB.SaveChanges();
}
}
}
|
Step 7: First delete “EntityInheritance” Database in SqlServer if you have it.
Step 8: Now Run the application. At this time your database and your table will be created.
Step 9: Copy and pest below query.
Insert into Student values ('Munesh', 'Sharma','Male',null,null,'VIT','IT','CollageStudent')
Insert into Student values ('Rahul', 'Sharma','Male','KVM','Seven',null,null,'SchoolStudent')
Insert into Student values ('Sara', 'vilium','Female','Aadharsh','Eight',null,null,'SchoolStudent')
Insert into Student values ('Rani', 'hash','Female',null,null,'MIT','ECE','CollageStudent')
Insert into Student values ('XYZ', 'ABC','Female','Ravat','Tenth',null,null,'SchoolStudent')
Insert into Student values ('Anshuman', 'EFG','Male',null,null,'BTC','Mechenical','CollageStudent')
|
Note :- At this time Discriminator column is created automatically based on the type of Student information is inserted.