Monday, November 19, 2018

পার্ট 9 - Entity framework এর code first approach এ default stored procedure গুলোকে overriding করা

Suggested Articles
পার্ট 6 - How to seed the database with test data using entity framework
পার্ট 7 - Using stored procedures with entity framework
পার্ট 8 - Using stored procedures with the entity framework code first approach

Entity framework এর code first approach এ যে stored procedure গুলো তৈরি হয় (Insert, Update এবং Delete stored procedure) সেগুলোর কিভাবে পরিবর্তন করা যায় তা নিয়ে discuss করবো এই আর্টিকেলে। এই আর্টিকেলটি পার্ট 8 এর continuation, তাই এই আর্টিকেলটি শুরু কারার আগে পার্ট 8 এ একবার চোখবুলিয়ে আসুন।


public class EmployeeDBContext : DbContext
{
    public DbSet<Employee> Employees { getset; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().MapToStoredProcedures();
        base.OnModelCreating(modelBuilder);
    }
}

By default, উপরের code, Employee objects গুলোকে Insert, Update এবং Delete করার জন্য নিচের ৩ টি stored procedures তৈরি করে -
Employee_Insert
Employee_Update
Employee_Delete

আপনি যদি auto-generated এই stored procedures গুলোর default name কে override অথবা change করতে চান তাহলে EmployeeDBContext class এর code গুলোকে নিচের code এর মতো পরিবর্তন করতে হবে -

public class EmployeeDBContext : DbContext
{
    public DbSet<Employee> Employees { getset; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>()
            .MapToStoredProcedures(p => p.Insert(x => x.HasName("InsertEmployee")));
        modelBuilder.Entity<Employee>()
            .MapToStoredProcedures(p => p.Update(x => x.HasName("UpdateEmployee")));
        modelBuilder.Entity<Employee>()
            .MapToStoredProcedures(p => p.Delete(x => x.HasName("DeleteEmployee")));

        base.OnModelCreating(modelBuilder);
    }
}

এখন Sample database টা delete করে দেন এবং WebForm1 কে run করুন। দেখা যাবে generated stored procedures গুলোর নাম আমাদের specify করে দেয়া নাম অনুসারে হয়েছে -
Entity framework এর code first approach এ default stored procedure গুলোকে overriding করা
Names of the generated SP
উপরের code গুলোকে নিচের মতো করেও লেখা যায় -

public class EmployeeDBContext : DbContext
{
    public DbSet<Employee> Employees { getset; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().MapToStoredProcedures
            (p => p.Insert(i => i.HasName("InsertEmployee"))
                    .Update(u => u.HasName("UpdateEmployee"))
                    .Delete(d => d.HasName("DeleteEmployee"))
            );
        base.OnModelCreating(modelBuilder);
    }
}

নিচের এই code গুলো দিয়ে stored procedures এর default parameter এর name গুলোও পরিবর্তন করা যায়
public class EmployeeDBContext : DbContext
{
    public DbSet<Employee> Employees { getset; }

    protected override void OnModelCreating(DbModelBuilder modelBuilder)
    {
        modelBuilder.Entity<Employee>().MapToStoredProcedures
            (p => p.Insert(i => i.HasName("InsertEmployee")
                                    .Parameter(n => n.Name, "EmployeeName")
                                    .Parameter(n => n.Gender, "EmployeeGender")
                                    .Parameter(n => n.Salary, "EmployeeSalary"))
                    .Update(u => u.HasName("UpdateEmployee")
                                    .Parameter(n => n.ID, "EmployeeID")
                                    .Parameter(n => n.Name, "EmployeeName")
                                    .Parameter(n => n.Gender, "EmployeeGender")
                                    .Parameter(n => n.Salary, "EmployeeSalary"))
                    .Delete(d => d.HasName("DeleteEmployee")
                                    .Parameter(n => n.ID, "EmployeeID"))
            );
        base.OnModelCreating(modelBuilder);
    }
}

এখন আবার Sample database টা drop করে WebForm1 run করুন। দেখা যাবে parameters এর নাম গুলো আমদের specify করা নাম অনুসারে হয়েছে -
 Entity framework এর code first approach এ default stored procedure গুলোকে overriding করা
Parameters Name of SP


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


No comments:

Post a Comment