Entity Framework (EF) ডাটাবেসের সাথে যোগাযোগের জন্য প্রাথমিকভাবে LINQ এবং DbSet ব্যবহার করে, তবে কখনও কখনও ডেটাবেসের Stored Procedure (SP) এবং View ব্যবহার করা বেশি কার্যকর হতে পারে। Stored Procedure এবং View ব্যবহার করে আপনি ডেটাবেসের মধ্যে জটিল লজিক বা কুয়েরি প্রক্রিয়া পরিচালনা করতে পারেন এবং পারফরম্যান্স উন্নত করতে পারেন।
Stored Procedure হল একটি প্রি-কম্পাইলড SQL স্ক্রিপ্ট, যা ডেটাবেস সার্ভারে সংরক্ষিত থাকে। এটি একাধিক SQL স্টেটমেন্টের একটি গ্রুপ হতে পারে, যা একটি নির্দিষ্ট কার্য সম্পাদন করে। EF তে, আপনি Stored Procedure কল করে কাস্টম SQL লজিক চালাতে পারেন এবং রেজাল্টস রিটার্ন করতে পারেন।
ধরা যাক, আপনার ডেটাবেসে একটি GetStudentsByAge নামের Stored Procedure রয়েছে, যা একটি নির্দিষ্ট বয়সের ছাত্রদের ফিরিয়ে দেয়।
CREATE PROCEDURE GetStudentsByAge
@Age INT
AS
BEGIN
SELECT * FROM Students WHERE Age = @Age;
END
এখন, Entity Framework ব্যবহার করে এই Stored Procedure কল করতে পারেন:
using (var context = new SchoolContext())
{
// Stored Procedure কল করা
var age = 20;
var students = context.Students.FromSqlRaw("EXEC GetStudentsByAge @Age = {0}", age).ToList();
foreach (var student in students)
{
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
}
এখানে:
{0}
হল age প্যারামিটার, যা SQL কোডের ভিতরে পাস করা হচ্ছে।আপনি Stored Procedure কল করার জন্য Asynchronous অপশনও ব্যবহার করতে পারেন, যা বৃহৎ ডেটা সেটের জন্য কার্যকরী।
using (var context = new SchoolContext())
{
var age = 20;
var students = await context.Students.FromSqlRaw("EXEC GetStudentsByAge @Age = {0}", age).ToListAsync();
foreach (var student in students)
{
Console.WriteLine($"Name: {student.Name}, Age: {student.Age}");
}
}
এখানে, ToListAsync()
ব্যবহার করে আউটপুট অ্যাসিঙ্ক্রোনাসভাবে রিটার্ন করা হচ্ছে।
View হল একটি ভার্চুয়াল টেবিল যা SQL কুয়েরি বা স্টেটমেন্টের মাধ্যমে তৈরি হয় এবং একটি লজিকাল ডেটা ভিউ তৈরি করে। এটি ডেটাবেসের মধ্যে একটি অবজেক্ট হিসেবে সঞ্চিত থাকে এবং এতে বিভিন্ন টেবিলের ডেটা একটি নির্দিষ্ট কুয়েরি অনুযায়ী একত্রিত করা হতে পারে। EF তে View এর সাথে কাজ করতে খুব সহজ, কারণ এটি একটি সাধারণ টেবিলের মতো কাজ করে।
ধরা যাক, আপনার ডেটাবেসে একটি StudentCourseView নামে একটি View তৈরি করা হয়েছে, যা ছাত্রদের নাম এবং তাদের কোর্সের নাম দেখায়।
CREATE VIEW StudentCourseView AS
SELECT s.Name AS StudentName, c.CourseName
FROM Students s
INNER JOIN Courses c ON s.StudentId = c.StudentId;
এখন, EF তে এই View ব্যবহার করে ডেটা রিট্রাইভ করা যায়:
public class StudentCourseView
{
public string StudentName { get; set; }
public string CourseName { get; set; }
}
using (var context = new SchoolContext())
{
var studentCourses = context.Set<StudentCourseView>().ToList();
foreach (var item in studentCourses)
{
Console.WriteLine($"Student: {item.StudentName}, Course: {item.CourseName}");
}
}
এখানে:
Entity Framework এর মাধ্যমে Stored Procedure এবং View ব্যবহার করে আপনি ডেটাবেসের জটিল কুয়েরি লজিক এবং পারফরম্যান্স উন্নত করতে পারেন। Stored Procedure দিয়ে আপনি ডেটাবেসের জন্য কাস্টম লজিক তৈরি করতে পারেন, এবং View দিয়ে একাধিক টেবিলের ডেটা একত্রে ভিউ হিসেবে উপস্থাপন করতে পারেন। EF এ এই দুটি ফিচার ব্যবহার করে, আপনি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং নিরাপত্তা বৃদ্ধি করতে পারবেন।
Entity Framework (EF) তে Stored Procedure ব্যবহার করা একটি অত্যন্ত কার্যকরী পদ্ধতি, যার মাধ্যমে আপনি ডেটাবেস অপারেশনগুলি আরো দ্রুত এবং নিরাপদে পরিচালনা করতে পারেন। EF তে Stored Procedure ব্যবহার করার জন্য কিছু নির্দিষ্ট কৌশল রয়েছে, যা আপনার কোডে Raw SQL কুয়েরি বা Stored Procedure ব্যবহার করার জন্য সহায়তা করে। EF 6 এবং EF Core উভয়ই Stored Procedure এর সমর্থন দেয়, তবে EF Core এ কিছু নতুন ফিচার এবং সুবিধা রয়েছে যা Stored Procedure ব্যবস্থাপনা আরো সহজ এবং শক্তিশালী করে।
EF এর মাধ্যমে Stored Procedure কল করার জন্য মূলত দুইটি পদ্ধতি ব্যবহার করা হয়:
এগুলো ছাড়াও EF 7+ এ কিছু নতুন ফিচার যেমন ExecuteSqlInterpolated এবং FromSqlInterpolated যুক্ত করা হয়েছে।
FromSqlRaw মেথড ব্যবহার করে আপনি Stored Procedure থেকে ডেটা রিটার্ন করতে পারেন এবং সেই ডেটা আপনার Entity মডেল দিয়ে ম্যাপ করতে পারেন।
ধরা যাক, আপনার ডেটাবেসে একটি Stored Procedure রয়েছে যা একটি নির্দিষ্ট বয়সের ছাত্রদের তথ্য রিটার্ন করে:
CREATE PROCEDURE GetStudentsByAge
@age INT
AS
BEGIN
SELECT * FROM Students WHERE Age = @age;
END
এখন, EF এর মাধ্যমে এই Stored Procedure কল করে আমরা ডেটা রিটার্ন করতে পারি:
using (var context = new SchoolContext())
{
var age = 20;
// Stored Procedure থেকে ডেটা রিটার্ন করা
var students = context.Students
.FromSqlRaw("EXEC GetStudentsByAge @age",
new SqlParameter("@age", age))
.ToList();
foreach (var student in students)
{
Console.WriteLine($"{student.Name}, {student.Age}");
}
}
এখানে:
FromSqlRaw
: এটি Raw SQL কুয়েরি বা Stored Procedure কল করতে ব্যবহৃত হয়।SqlParameter
: প্যারামিটার ব্যবহার করে SQL কুয়েরির ইনপুট ডেটা সুরক্ষিতভাবে পাস করা হয়।এভাবে EF আপনার Students
Entity ক্লাসের সাথে রিটার্ন হওয়া ডেটা ম্যাপ করে এবং ডেটাবেস থেকে প্রয়োজনীয় তথ্য রিটার্ন করে।
ExecuteSqlRaw মেথড দিয়ে আপনি Stored Procedure কল করে ডেটাবেসে INSERT, UPDATE অথবা DELETE অপারেশন করতে পারেন। এই মেথডটি সাধারণত কোনো ডেটা রিটার্ন না করার সময় ব্যবহৃত হয়, যেমন যখন আপনি ডেটাবেসে কোনো রেকর্ড ইনসার্ট করতে চান।
ধরা যাক, আপনার ডেটাবেসে একটি Stored Procedure রয়েছে যা একটি নতুন ছাত্র যোগ করে:
CREATE PROCEDURE AddStudent
@name NVARCHAR(100),
@age INT,
@address NVARCHAR(200)
AS
BEGIN
INSERT INTO Students (Name, Age, Address)
VALUES (@name, @age, @address);
END
এখন, আপনি EF এর মাধ্যমে এই Stored Procedure কল করতে পারেন:
using (var context = new SchoolContext())
{
var name = "John Doe";
var age = 22;
var address = "123 Main St";
// Stored Procedure কল করে ডেটাবেসে ইনসার্ট করা
context.Database.ExecuteSqlRaw("EXEC AddStudent @name, @age, @address",
new SqlParameter("@name", name),
new SqlParameter("@age", age),
new SqlParameter("@address", address));
}
এখানে:
ExecuteSqlRaw
: এটি Raw SQL বা Stored Procedure এক্সিকিউট করতে ব্যবহৃত হয়। এটি কোনো রিটার্ন ভ্যালু দেয় না, কিন্তু এটি ডেটাবেসের সাথে ইন্টারঅ্যাক্ট করে এবং ডেটা আপডেট, ইনসার্ট বা ডিলিট করে।যখন আপনি Stored Procedure থেকে ডেটা রিটার্ন করেন, EF স্বয়ংক্রিয়ভাবে আউটপুটকে Entity ক্লাসের সাথে ম্যাপ করে। তবে, আপনি যদি আউটপুটের জন্য একটি কাস্টম মডেল বা ডেটা ক্লাস ব্যবহার করতে চান, তবে EF তে আপনার আউটপুটকে সেই মডেলটির সাথে ম্যাপ করা যেতে পারে।
ধরা যাক, আপনার একটি StudentDTO
ক্লাস আছে যেটি Student
Entity এর কিছু নির্দিষ্ট ফিল্ড নিয়ে তৈরি।
public class StudentDTO
{
public string Name { get; set; }
public int Age { get; set; }
}
using (var context = new SchoolContext())
{
var age = 20;
// FromSqlRaw দিয়ে কাস্টম DTO ব্যবহার করা
var students = context.Set<StudentDTO>()
.FromSqlRaw("EXEC GetStudentsByAge @age",
new SqlParameter("@age", age))
.ToList();
foreach (var student in students)
{
Console.WriteLine($"{student.Name}, {student.Age}");
}
}
এখানে:
context.Set<StudentDTO>()
: StudentDTO
ক্লাসকে Entity হিসেবে ব্যবহার করা হচ্ছে।FromSqlRaw
: এটি Stored Procedure থেকে ডেটা রিটার্ন করে এবং StudentDTO
ক্লাসে ম্যাপ করে।EF Core তে Stored Procedure ব্যবহার করার জন্য আপনাকে ExecuteSqlRaw বা FromSqlRaw ব্যবহার করতে হয়। EF Core 7 এবং তার পরবর্তী সংস্করণে কিছু নতুন ফিচার যুক্ত হয়েছে, যেমন ExecuteSqlInterpolated এবং FromSqlInterpolated, যা প্যারামিটারাইজড কুয়েরি লেখাকে আরও নিরাপদ করে তোলে। এই নতুন ফিচারের সাহায্যে SQL ইনজেকশন থেকে রক্ষা পাওয়া যায়।
context.Database.ExecuteSqlInterpolated($"EXEC AddStudent {name}, {age}, {address}");
এখানে:
এইভাবে, EF তে Stored Procedure ব্যবহার করে আপনি আপনার অ্যাপ্লিকেশনের পারফরম্যান্স এবং সিকিউরিটি উন্নত করতে পারবেন।
Stored Procedures হল প্রি-কম্পাইলড SQL কুয়েরি বা স্ক্রিপ্ট, যা ডেটাবেসে সংরক্ষিত থাকে এবং একাধিকবার চালানো যেতে পারে। Entity Framework (EF) ব্যবহার করে আপনি সহজেই Stored Procedure দিয়ে CRUD (Create, Read, Update, Delete) অপারেশন ইমপ্লিমেন্ট করতে পারেন। EF আপনাকে এই Stored Procedure গুলিকে কল করতে এবং তাদের মাধ্যমে ডেটাবেসে পরিবর্তন করতে সহায়তা করে।
এই টিউটোরিয়ালে আমরা দেখব কিভাবে EF ব্যবহার করে Stored Procedure এর মাধ্যমে CRUD অপারেশন করা যায়।
EF তে Stored Procedure ব্যবহার করতে হলে প্রথমে আপনাকে কিছু প্রাথমিক কাজ করতে হবে:
DbSet
বা DbContext
ক্লাসে কাস্টম মেথড তৈরি করতে হয়।প্রথমেই আপনাকে ডেটাবেসে একটি 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
টেবিলে নতুন কর্মী যোগ করবে।
এখন আপনার EF DbContext ক্লাসে Stored Procedure এর মাধ্যমে অপারেশন চালানোর জন্য মেথড তৈরি করতে হবে।
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 কল করা হয়েছে।আপনি 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
মেথড ব্যবহার করে আমরা GetAllEmployees
Stored Procedure কল করে Employee টেবিলের সমস্ত ডেটা রিট্রাইভ করছি।Stored Procedure
ব্যবহার করে ডেটাবেসে আপডেট অপারেশন চালানোও সম্ভব। নিচে একটি Stored Procedure এবং সেটি EF এর মাধ্যমে কল করার উদাহরণ:
CREATE PROCEDURE UpdateEmployee
@EmployeeId INT,
@EmployeeName NVARCHAR(100),
@EmployeeAge INT
AS
BEGIN
UPDATE Employees
SET Name = @EmployeeName, Age = @EmployeeAge
WHERE EmployeeId = @EmployeeId
END
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 কল করছি।Delete
অপারেশনের জন্যও আপনি Stored Procedure ব্যবহার করতে পারেন। নিচে একটি DeleteEmployee
Stored Procedure এবং এটি EF এর মাধ্যমে কল করার উদাহরণ দেয়া হল:
CREATE PROCEDURE DeleteEmployee
@EmployeeId INT
AS
BEGIN
DELETE FROM Employees WHERE EmployeeId = @EmployeeId
END
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 কল করার সময় আপনি SQL প্যারামিটার ব্যবহার করতে পারেন, যেগুলি SQL ইনজেকশন প্রতিরোধে সহায়ক। এর মাধ্যমে আপনি ডায়নামিক ডেটা নিয়ে কাজ করতে পারেন, যেমন:
var parameter = new SqlParameter("@EmployeeId", SqlDbType.Int) { Value = employeeId };
এইভাবে, আপনি প্যারামিটারাইজড কুয়েরি চালিয়ে SQL ইনজেকশন এড়াতে পারবেন।
SqlParameter
ব্যবহার করে SQL ইনজেকশন থেকে নিরাপদে ডেটা পাঠানো যায়।Stored Procedure দিয়ে CRUD অপারেশন ব্যবহার করলে ডেটাবেসের নিরাপত্তা, পারফরম্যান্স এবং রিয়ুজেবিলিটি বাড়াতে সাহায্য করে।
Database Views হল ডেটাবেসের একটি ভার্চুয়াল টেবিল, যা মূল ডেটাবেস টেবিল থেকে নির্বাচিত ডেটাকে একটি নির্দিষ্ট উপস্থাপনায় প্রদর্শন করে। একটি View সাধারণত SQL কুয়েরি বা স্টোরড প্রোসিজার (Stored Procedure) হিসেবে তৈরি করা হয়, যা একাধিক টেবিলের ডেটাকে একত্রিত করে বা বিশেষভাবে সাজিয়ে একটি নির্দিষ্ট আউটপুট প্রদান করে। Entity Framework (EF) এ Views ব্যবহার করা অনেকটা স্টোরড প্রোসিজারের মতো, তবে এখানে মূল লক্ষ্য হল ডেটা নির্বাচন এবং ফরম্যাটিং, যা ডেটাবেসের বিভিন্ন অংশে পুনরায় ব্যবহার করা যায়।
একটি Database View আসলে একটি সিলেক্ট কুয়েরির ফলাফল হিসেবে কাজ করে, যেটি ডেটাবেসের টেবিলগুলির ওপর ভিত্তি করে তৈরি করা হয়। এটি মূলত ভার্চুয়াল টেবিল, কারণ এটি ডেটাবেসের কোনো বাস্তব টেবিলের মতো সংরক্ষিত হয় না, তবে কেবল একটি SQL কুয়েরি বা ডেটাবেসের ডেটার নির্দিষ্ট উপস্থাপনা হিসেবে কাজ করে।
View তৈরি করতে গিয়ে, আপনি সাধারণত এক বা একাধিক টেবিলের ডেটা একত্রিত করবেন, এবং সেই ডেটা প্রদর্শনের জন্য একটি নির্দিষ্ট কাঠামো তৈরির চেষ্টা করবেন।
ডেটাবেসে View তৈরি করতে SQL ব্যবহার করা হয়। Entity Framework (EF) এ View তৈরি করা এবং তারপরে ব্যবহার করার প্রক্রিয়া নিম্নরূপ:
প্রথমে, ডেটাবেসে View তৈরি করতে হয়। ধরুন, একটি সেলস রিপোর্ট তৈরি করতে চান, যেখানে পণ্য এবং বিক্রির তথ্য একত্রিত করা হবে। একটি সাধারণ View তৈরির SQL কুয়েরি হতে পারে:
CREATE VIEW SalesReport AS
SELECT ProductName, SUM(Quantity) AS TotalQuantity, SUM(TotalPrice) AS TotalSales
FROM Sales
JOIN Products ON Sales.ProductID = Products.ProductID
GROUP BY ProductName;
এই কুয়েরিটি SalesReport নামে একটি View তৈরি করবে, যেখানে পণ্যের বিক্রি এবং মোট বিক্রির পরিমাণ দেওয়া থাকবে।
EF-এর মধ্যে, View এর সাথে মডেল কনফিগারেশন করার জন্য আপনাকে কেবল View এর ডেটা রিড করার জন্য একটি ক্লাস তৈরি করতে হবে। মনে রাখবেন, View কে Entity হিসেবে ব্যবহার করার জন্য আপনাকে DbSet তৈরি করতে হবে, যদিও এটি সাধারণত Read-Only।
public class SalesReport
{
public string ProductName { get; set; }
public int TotalQuantity { get; set; }
public decimal TotalSales { get; set; }
}
public class ApplicationDbContext : DbContext
{
public DbSet<SalesReport> SalesReports { get; set; }
protected override void OnModelCreating(ModelBuilder modelBuilder)
{
// View এর জন্য ডেটাবেস মডেল কনফিগারেশন
modelBuilder.Entity<SalesReport>(entity =>
{
entity.HasNoKey(); // View এ কোনো প্রাইমারি কী থাকে না
entity.ToView("SalesReport"); // View এর নাম উল্লেখ
});
}
}
একবার View তৈরি এবং মডেলে কনফিগার করা হলে, আপনি Entity Framework এর মাধ্যমে সহজেই View থেকে ডেটা রিড করতে পারবেন।
using (var context = new ApplicationDbContext())
{
var salesReports = context.SalesReports.ToList();
foreach (var report in salesReports)
{
Console.WriteLine($"Product: {report.ProductName}, Total Quantity: {report.TotalQuantity}, Total Sales: {report.TotalSales}");
}
}
এই কোডটি SalesReport
View থেকে ডেটা রিড করবে এবং তারপরে তা প্রদর্শন করবে।
Views আপনাকে মূল টেবিলের ডেটা অ্যাবস্ট্রাক্ট করতে সাহায্য করে, যার ফলে একাধিক টেবিলের ডেটাকে একটি সোজা ও পরিষ্কার উপস্থাপনায় রেন্ডার করা যায়। এর মাধ্যমে আপনি ডেটাবেসের কাঠামো থেকে ব্যবহারকারীদের দূরে রাখতে পারেন এবং কেবল প্রয়োজনীয় ডেটাই প্রদর্শন করতে পারেন।
Views ব্যবহার করে একাধিক টেবিলের ডেটা একত্রিত করা যায় এবং সেই ডেটাকে একটি সহজ ও ব্যবহারযোগ্য ফরম্যাটে উপস্থাপন করা যায়। এটি বিশেষভাবে তখন কার্যকরী হয়, যখন আপনাকে ডেটাবেসের মধ্যে সম্পর্কিত টেবিলের ডেটা একত্রিত করতে হয়।
Views সাধারণত Read-Only হয়ে থাকে, অর্থাৎ আপনি Views থেকে ডেটা রিড করতে পারেন, তবে তাতে ডেটা ইনসার্ট, আপডেট বা ডিলিট করতে পারবেন না। এর মানে হল, যে ডেটা ব্যবহারকারীদের দেখানো হচ্ছে তা পূর্বে তৈরি হওয়া এবং কার্যকরী ডেটাবেস টেবিল থেকে একত্রিত।
Views ব্যবহার করে আপনি নির্দিষ্ট ধরনের জটিল কুয়েরি পুনরাবৃত্তি করতে পারবেন, এবং তা সরাসরি ডেটাবেসে সংরক্ষণ করে রাখতে পারবেন। এতে ডেটাবেসে সিলেক্ট কুয়েরি প্রক্রিয়া দ্রুত হয়, কারণ Views আগে থেকেই প্রিপেয়ার্ড থাকে।
Stored Procedure এবং Views এ কাজ করার জন্য Entity Framework-এর মধ্যে কিছু সীমাবদ্ধতা রয়েছে, তবে আপনি FromSqlRaw বা ExecuteSqlRaw এর মতো মেথড ব্যবহার করে এগুলোকে সমর্থন দিতে পারেন। এই মেথডগুলো সরাসরি SQL স্টেটমেন্ট ব্যবহার করতে সাহায্য করে।
var salesReports = context.SalesReports.FromSqlRaw("SELECT * FROM SalesReport").ToList();
Entity Framework-এ Database Views হল শক্তিশালী টুল যা ডেটা একত্রিত, প্রসেস, এবং উপস্থাপনা করতে সাহায্য করে। আপনি Views ব্যবহার করে জটিল কুয়েরি অপারেশনগুলো ডেটাবেস স্তরে অগ্রসর করতে পারেন এবং এটি ডেটার রিড-অনলি অ্যাক্সেস প্রদান করে। Views এবং EF-এর মডেল কনফিগারেশন করার মাধ্যমে আপনি ডেটাবেসের কাঠামো ও ডেটা ম্যানেজমেন্টকে আরও কার্যকরী এবং অপটিমাইজড করতে পারেন।
Entity Framework (EF) তে Function Imports এবং Complex Query Handling আপনাকে বিশেষ ধরনের ডেটাবেস অপারেশন এবং কুয়েরি পরিচালনা করতে সহায়তা করে। যখন আপনি ডেটাবেসে জটিল কুয়েরি করতে চান বা কোনো স্টোরড প্রোসিজার (Stored Procedure) বা ফাংশন ব্যবহার করতে চান, তখন EF-এর মাধ্যমে Function Imports এবং Complex Query Handling খুবই কার্যকর পদ্ধতি।
Function Imports হল একটি Entity Framework ফিচার যা আপনাকে স্টোরড প্রোসিজার বা ডেটাবেস ফাংশন থেকে ডেটা রিটার্ন করতে সহায়তা করে। এই ফিচারের মাধ্যমে আপনি EF মডেল এবং স্টোরড প্রোসিজার বা ফাংশন এর মধ্যে একটি সরাসরি সংযোগ তৈরি করতে পারেন, যাতে আপনি কোডের মাধ্যমে ডেটাবেসের জটিল অপারেশনগুলো সঞ্চালন করতে পারেন।
Function Imports এর মাধ্যমে আপনি ডেটাবেসে স্টোরড প্রোসিজার বা ফাংশনকে EF মডেলে এক্সপোজ করতে পারেন। এটি আপনাকে ডেটাবেসের ফাংশন বা প্রোসিজার কল করার সময় LINQ বা C# কোড ব্যবহার করার সুবিধা দেয়।
Function Import এর সাথে LINQ ব্যবহার করা: একটি স্টোরড প্রোসিজার বা ফাংশন এর মাধ্যমে ডেটা বের করতে, আপনি LINQ ব্যবহার করতে পারেন। যেমন:
var result = context.MyFunctionImport(param1, param2).ToList();
এখানে MyFunctionImport
হল আপনার স্টোরড ফাংশনের নাম, এবং param1
, param2
হল ফাংশনের প্যারামিটার।
int
, string
)Complex Query Handling বা জটিল কুয়েরি পরিচালনা হল ডেটাবেসে জটিল কুয়েরি চালানোর প্রক্রিয়া, যেখানে একাধিক টেবিলের সাথে সম্পর্কিত ডেটা বের করার জন্য লজিক্যাল কুয়েরি প্রয়োগ করা হয়। EF তে LINQ এবং SQL Query ব্যবহার করে কমপ্লেক্স কুয়েরি পরিচালনা করা যেতে পারে।
LINQ to Entities: LINQ to Entities Entity Framework এর মাধ্যমে সোজা কোডে SQL কুয়েরি লেখার মতো কাজ করতে সহায়ক। EF এর মাধ্যমে আপনি সহজেই একাধিক টেবিলের ডেটা ফিল্টার, গ্রুপ, বা অর্ডার করতে পারেন।
উদাহরণ:
var result = from p in context.Products
where p.Category == "Electronics"
orderby p.Price descending
select p;
Join এবং Complex Filtering: EF তে আপনি JOIN ব্যবহার করে একাধিক টেবিল থেকে ডেটা একত্রিত করতে পারেন।
উদাহরণ:
var result = from p in context.Products
join c in context.Categories on p.CategoryId equals c.Id
where c.Name == "Electronics"
select new { p.Name, p.Price, c.Name };
Group By এবং Aggregation: আপনি GroupBy
এবং Aggregation Functions
(যেমন Sum
, Average
, Min
, Max
) ব্যবহার করে ডেটা গ্রুপিং এবং অ্যাগ্রিগেট করতে পারেন।
উদাহরণ:
var result = from p in context.Products
group p by p.Category into g
select new
{
Category = g.Key,
TotalPrice = g.Sum(p => p.Price)
};
Stored Procedure Call:
var result = context.Database.SqlQuery<Product>("EXEC GetProductsByCategory @category", new SqlParameter("@category", "Electronics")).ToList();
Raw SQL Query:
var result = context.Products.FromSqlRaw("SELECT * FROM Products WHERE Price > @price", new SqlParameter("@price", 100)).ToList();
Entity Framework এর Function Imports এবং Complex Query Handling ব্যবহার করে আপনি আরও শক্তিশালী এবং নমনীয় ডেটাবেস অপারেশন করতে পারবেন। যেখানে Function Imports আপনাকে ডেটাবেস ফাংশন বা প্রোসিজার কল করার সুবিধা দেয়, সেখানে Complex Query Handling বিভিন্ন টেবিলের ডেটা একত্রিত করার জন্য জটিল কুয়েরি চালানোর সক্ষমতা প্রদান করে। EF-এ এই দুটি ফিচার ব্যবহার করে আপনি সহজে প্রোগ্রামিং পরিবেশে ডেটাবেসের কার্যক্রম পরিচালনা করতে পারেন।
Read more