Stored Procedures হল প্রি-কম্পাইলড SQL কুয়েরি বা স্ক্রিপ্ট, যা ডেটাবেসে সংরক্ষিত থাকে এবং একাধিকবার চালানো যেতে পারে। Entity Framework (EF) ব্যবহার করে আপনি সহজেই Stored Procedure দিয়ে CRUD (Create, Read, Update, Delete) অপারেশন ইমপ্লিমেন্ট করতে পারেন। EF আপনাকে এই Stored Procedure গুলিকে কল করতে এবং তাদের মাধ্যমে ডেটাবেসে পরিবর্তন করতে সহায়তা করে।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে EF ব্যবহার করে Stored Procedure এর মাধ্যমে CRUD অপারেশন করা যায়।
Stored Procedure দিয়ে CRUD অপারেশন চালানোর জন্য প্রাথমিক ধাপ
EF তে Stored Procedure ব্যবহার করতে হলে প্রথমে আপনাকে কিছু প্রাথমিক কাজ করতে হবে:
- Stored Procedure তৈরি করা: আপনার ডেটাবেসে Stored Procedure তৈরি করুন।
- DbContext ক্লাসে Stored Procedure এর জন্য মেথড সংজ্ঞায়িত করা: EF তে Stored Procedure কল করার জন্য
DbSetবাDbContextক্লাসে কাস্টম মেথড তৈরি করতে হয়। - Stored Procedure কল করা: EF এর মাধ্যমে SQL কুয়েরি ব্যবহার করে Stored Procedure কল করুন।
1. Stored Procedure তৈরি করা
প্রথমেই আপনাকে ডেটাবেসে একটি Stored Procedure তৈরি করতে হবে। নিচে একটি সাধারণ Stored Procedure এর উদাহরণ দেয়া হল, যা Employee টেবিলের মধ্যে নতুন ডেটা ইনসার্ট করবে:
CREATE PROCEDURE InsertEmployee
@EmployeeName NVARCHAR(100),
@EmployeeAge INT
AS
BEGIN
INSERT INTO Employees (Name, Age)
VALUES (@EmployeeName, @EmployeeAge)
END
এখানে, InsertEmployee নামে একটি Stored Procedure তৈরি করা হয়েছে, যা Employees টেবিলে নতুন কর্মী যোগ করবে।
2. DbContext ক্লাসে Stored Procedure এর জন্য মেথড সংজ্ঞায়িত করা
এখন আপনার EF DbContext ক্লাসে Stored Procedure এর মাধ্যমে অপারেশন চালানোর জন্য মেথড তৈরি করতে হবে।
Create (Insert) Operation:
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Create (Insert) operation via Stored Procedure
public void InsertEmployee(string name, int age)
{
var nameParam = new SqlParameter("@EmployeeName", name);
var ageParam = new SqlParameter("@EmployeeAge", age);
// Execute the stored procedure
this.Database.ExecuteSqlRaw("EXEC InsertEmployee @EmployeeName, @EmployeeAge", nameParam, ageParam);
}
}
এখানে:
InsertEmployeeমেথডে আমরাSqlParameterব্যবহার করে Stored Procedure এর ইনপুট প্যারামিটার পাঠাচ্ছি।ExecuteSqlRawমেথড ব্যবহার করে Stored Procedure কল করা হয়েছে।
Read (Select) Operation:
আপনি Stored Procedure ব্যবহার করে ডেটা রিট্রাইভ করতে পারেন, যেমন:
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Read (Select) operation via Stored Procedure
public List<Employee> GetEmployees()
{
return this.Employees.FromSqlRaw("EXEC GetAllEmployees").ToList();
}
}
এখানে:
FromSqlRawমেথড ব্যবহার করে আমরাGetAllEmployeesStored Procedure কল করে Employee টেবিলের সমস্ত ডেটা রিট্রাইভ করছি।
3. Update Operation
Stored Procedure ব্যবহার করে ডেটাবেসে আপডেট অপারেশন চালানোও সম্ভব। নিচে একটি Stored Procedure এবং সেটি EF এর মাধ্যমে কল করার উদাহরণ:
Stored Procedure:
CREATE PROCEDURE UpdateEmployee
@EmployeeId INT,
@EmployeeName NVARCHAR(100),
@EmployeeAge INT
AS
BEGIN
UPDATE Employees
SET Name = @EmployeeName, Age = @EmployeeAge
WHERE EmployeeId = @EmployeeId
END
C# Code for Update:
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Update operation via Stored Procedure
public void UpdateEmployee(int employeeId, string name, int age)
{
var idParam = new SqlParameter("@EmployeeId", employeeId);
var nameParam = new SqlParameter("@EmployeeName", name);
var ageParam = new SqlParameter("@EmployeeAge", age);
// Execute the stored procedure
this.Database.ExecuteSqlRaw("EXEC UpdateEmployee @EmployeeId, @EmployeeName, @EmployeeAge", idParam, nameParam, ageParam);
}
}
এখানে:
UpdateEmployeeমেথডে আমরা তিনটি প্যারামিটার পাঠাচ্ছি, এবংExecuteSqlRawব্যবহার করে Stored Procedure কল করছি।
4. Delete Operation
Delete অপারেশনের জন্যও আপনি Stored Procedure ব্যবহার করতে পারেন। নিচে একটি DeleteEmployee Stored Procedure এবং এটি EF এর মাধ্যমে কল করার উদাহরণ দেয়া হল:
Stored Procedure:
CREATE PROCEDURE DeleteEmployee
@EmployeeId INT
AS
BEGIN
DELETE FROM Employees WHERE EmployeeId = @EmployeeId
END
C# Code for Delete:
public class ApplicationDbContext : DbContext
{
public DbSet<Employee> Employees { get; set; }
// Delete operation via Stored Procedure
public void DeleteEmployee(int employeeId)
{
var idParam = new SqlParameter("@EmployeeId", employeeId);
// Execute the stored procedure
this.Database.ExecuteSqlRaw("EXEC DeleteEmployee @EmployeeId", idParam);
}
}
এখানে:
DeleteEmployeeমেথডে আমরাEmployeeIdপ্যারামিটার পাঠাচ্ছি এবংExecuteSqlRawব্যবহার করে Stored Procedure কল করছি, যাতে নির্দিষ্ট কর্মী ডেটাবেস থেকে মুছে ফেলা হয়।
Stored Procedure এর সাথে Parameters ব্যবহৃত করা
Stored Procedure কল করার সময় আপনি SQL প্যারামিটার ব্যবহার করতে পারেন, যেগুলি SQL ইনজেকশন প্রতিরোধে সহায়ক। এর মাধ্যমে আপনি ডায়নামিক ডেটা নিয়ে কাজ করতে পারেন, যেমন:
var parameter = new SqlParameter("@EmployeeId", SqlDbType.Int) { Value = employeeId };
এইভাবে, আপনি প্যারামিটারাইজড কুয়েরি চালিয়ে SQL ইনজেকশন এড়াতে পারবেন।
সারাংশ
- CRUD (Create, Read, Update, Delete) অপারেশনগুলি EF এর মাধ্যমে Stored Procedure ব্যবহার করে সহজে ইমপ্লিমেন্ট করা যায়।
- ExecuteSqlRaw এবং FromSqlRaw মেথড ব্যবহার করে Stored Procedure কল করা হয়।
SqlParameterব্যবহার করে SQL ইনজেকশন থেকে নিরাপদে ডেটা পাঠানো যায়।- Stored Procedure গুলি ডেটাবেসের মধ্যে রাখা যায়, যা একাধিক অ্যাপ্লিকেশনে পুনঃব্যবহার করা যায় এবং ডেটাবেসের পারফরম্যান্স বাড়াতে সহায়তা করে।
Stored Procedure দিয়ে CRUD অপারেশন ব্যবহার করলে ডেটাবেসের নিরাপত্তা, পারফরম্যান্স এবং রিয়ুজেবিলিটি বাড়াতে সাহায্য করে।
Read more