Wednesday, 1 April 2015

Self referencing association in entity framework with code first

Step1: Go to your application and Add a class (Student.cs) file to your application.

namespace Entity
    public class Student
        public int StudentID { getset; }
        public string StudentName { getset; }
        public int? HODID { getset; }

        public Student HOD { getset; }

Step 2: Add another class(StudentDBContext.cs)file to the project.
using System.Data.Entity;
namespace Entity
    public class StudentDBContext : DbContext
        public DbSet<Student> Students { getset; }

        protected override void OnModelCreating(DbModelBuilder _model)
                .HasOptional(c => c.HOD)
                .HasForeignKey(c => c.HODID);


Step 3: Add the web.config file for database connection string.
  <add name="StudentDBContext"
            connectionString="server=.; database=Entity; integrated security=SSPI;"
            providerName="System.Data.SqlClient" />

Step 4: Add a webform to your application and Drag and drop a GridView control from tool box. 

Step 5: Write the below code.
using System;
using System.Linq;
namespace Demo
    public partial class WebForm1 : System.Web.UI.Page
        protected void Page_Load(object sender, EventArgs e)
            StudentDBContext studentDBContext = new StudentDBContext();
            GridView1.DataSource = studentDBContext.Students.Select(c => new
                StudentName = c.StudentName,
                HODName = c.HOD == null ?
                    "Principle" : c.HOD.StudentName

Step 6: Run your application. Entity database and Students table will be created at this time. You see that StudentID is marked as primary key and HODID is marked as foreign key.

Step 7: Insert test data using the following SQL script

Insert into Students values ('Munesh', NULL)
Insert into Students values ('Rahul', NULL)
Insert into Students values ('Micale', NULL)
Insert into Students values ('Tom', NULL)
Insert into Students values ('Ram', NULL)
Insert into Students values ('Lick', NULL)
Insert into Students values ('ABC', NULL)
Update Students Set HODID  = 5 Where StudentName IN ('Ram''Rahul')
Update Students Set HODID  = 3 Where StudentName IN ('Tom','Micale')
Update Students Set HODID  = 5 Where StudentName IN ('Lick')
Update Students Set HODID  = 4 Where StudentName IN ('ABC')

Now Run your application you will see that respective name and others detail will see.

No comments:

Post a Comment

Paging in html table using javascript

I demonstrated how to use HTML tables on the client for a very simple client-side paging solution. I have heard from several people who p...