Entity Framework'te Stored Procedure Kullanımı

  • Haziran 6, 2016
  • /
  • Yorum Yok

     Entity framework, tablolarımızda Insert, Update, Delete komutlarını çalıştırmamızı sağlayan otomatik oluşturulmuş sorgular içerir. Ancak bazen bunlar tek başına yeterli olmaz ve daha karmaşık işlemler yapmamız gerekir. Bu komutları pas geçip kendi oluşturduğumuz stored procedure'ları kullanmak isteriz. Stored procedure'lar aracılığıyla veritabanında Insert/Update/Delete/Insert komutlarını bir arada veya ayrı ayrı çalıştırabiliriz.

     Stored procedure'ler ve user-defined fonksiyonlar entity framework'te birer "function"dır.

     Aşağıdaki örnekte GetCoursesByStudentId adında bir stored procedure oluşturuyoruz. Bu, belirtilen öğrenciye atanmış tüm dersleri döndüren bir procedure.     

CREATE PROCEDURE [dbo].[GetCoursesByStudentId]
    -- Stored Procedure parametreleri
    @StudentId int = null
AS
BEGIN   
SELECT c.CourseId, c.CourseName,c.Location, c.TeacherId
FROM Students s 
LEFT OUTER JOIN StudentCourses sc on sc.StudentId = s.StudentId 
LEFT OUTER JOIN Courses c on c.CourseId = sc.CourseId
WHERE s.StudentId = @StudentId
END

     Eğer projenizde ADO.Net Entity Data Model varsa sadece diagramda boş bir alana sağ tıklayıp "Update Model From Database" demek yeterli olacaktır. Yoksa önce "EF Designer from database" seçeneği ile projeye entity data model ekleyelim.

     GetCoursesByStudentId'i seçin. "Import selected stored procedures and functions into the entity model" checkbox'ının seçili olması gerekiyor. Daha sonra Finish diyebilirz.

     

     Artık GetCoursesByStudentId aşağıdaki kod parçacığı gibi kullanılabilir :       

SchoolDbContext dbContext = new SchoolDbContext();
var courses = dbContext.GetCoursesByStudentId(1);
foreach (Course cs in courses)
{
    Console.WriteLine(cs.CourseName);
}

YORUMLAR
Email Adresi *
Görüntülenecek İsim *
Yorum *
Paylaş
  • f