در این پست از وبسایت پرووید در رابطه با کار کردن با Stored Procedure ها در Entity Framework Core #1 صحبت خواهیم کرد. تکنولوژی Entity Framework Core نسل بعدی Entity Framework است که توسط مایکروسافت معرفی شده است.

در این آموزش از وبسایت پرووید در رابطه با کار کردن با stored procedure ها در Entity Framework Core صحبت خواهیم کرد. در همین ابتدا توصیه می کنیم بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core و بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0 از وبسایت پرووید را مطالعه کنید. ضمناً، بسته ی SQL وبسایت پرووید در این رابطه می تواند برای شما بسیار مفید باشد. علاوه بر این، مطالعه کردن دیگر مطالب آموزشی وبسایت پرووید در این رابطه را نیز  توصیه می کنیم.

خب، همانطور که گفتیم در این آموزش قرار است که در رابطه با اجرا کردن stored procedure های دیتابیس در Entity Framework Core صحبت کنیم. در Entity Framework Core دو متد برای اجرا کردن stored procedure ها وجود دارند:


    DbSet<TEntity>.FromSql()
    DbContext.Database.ExecuteSqlCommand()

در اجرا کردن stored procedure های تعریف شده در یک دیتابیس با استفاده از این دو متد محدودیت هایی وجود دارند که باید از آنها مطلع باشید.

نتیجه ی برگشت داده شده از یک stored procedure باید یک entity باشد. به عبارت دیگر، باید تمامی فیلدهای یک جدول توسط آن stored procedure انتخاب شوند و نمی توان فقط تعدادی ای فیلدها را انتخاب کرد. اگر خاطرتان باشد در آموزش کار با متد FromSql در Entity Framework Core نیز چنین محدودیتی وجود داشت.

بسته ی آموزش ویدئویی Entity Framework 6

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی Entity Framework 6 دیدن کنید.

نتیجه برگشت داده شده از یک stored procedure نباید حاوی related data ها باشد. به عبارت دیگر، نمی توان از دستورات join در stored procedure ای که قرار است توسط Entity Framework Core اجرا شود استفاده کرد. در رابطه با دستورات join در بسته ی آموزش ویدئویی SQL و مایکروسافت Access از وبسایت پرووید بیشتر صحبت کرده ایم. ضمناً، اگر خاطرتان باشد در آموزش کار با متد FromSql در Entity Framework Core نیز چنین محدودیتی وجود داشت.

و محدودیت آخر اینکه stored procedure هایی که عملیات CUD یعنی Insert و Update و Delete را انجام می دهند نمی توانند با یک entity نگاشت و یا map شوند. بنابراین، متد SaveChanges نمی تواند stored procedure هایی که عملیات CUD انجام می دهند را call کند. به منظور یادگیری هر چه عمیق تر مفاهیم مربوط به Entity Framework Core توصیه می کنیم از بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core و بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0 از وبسایت پرووید دیدن کنید.

خب، در ادامه بیایید یک stored procedure در MS SQL Server ایجاد کنیم و پس از آن توسط Entity Framework Core آن را اجرا کنیم. در رابطه با stored procedure ها و MS SQL Server در بسته ی آموزش ویدئویی SQL و مایکروسافت Access از وبسایت پرووید به طور مفصل صحبت کرده ایم.

بسته ی آموزش ویدئویی معماری نرم افزار در Entity Framework Core

از شما دعوت می کنیم که از بسته ی آموزش ویدئویی معماری نرم افزار در Entity Framework Core دیدن کنید.

به منظور ساختن یک stored procedure به نام GetStudents در دیتابیس دو روش را بررسی می کنیم. اگر از روش database- first استفاده میکنید، دستورات زیر را وارد کرده و اجرا کنید.

USE [SchoolDB]
GO

SET ANSI_NULLS ON
GO

SET QUOTED_IDENTIFIER ON
GO

CREATE PROCEDURE [dbo].[GetStudents]
            @FirstName varchar(50)
        AS
        BEGIN
            SET NOCOUNT ON;
            select * from Students where FirstName like @FirstName +'%'
        END
GO

اگر از روش code-first استفاده می کنید، ابتدا یک migration ایجاد کنید. در رابطه با دو روش database-first و code-first در بسته ی آموزش ویدئویی 5 Entity Framework وبسایت پرووید بیشتر مطاله کنید. برای ایجاد یک migration دستور Add-migration sp-GetStudents را در NuGet Package Manager Console وارد کنید. در رابطه با migration ها در بسته ی آموزش ویدئویی Entity Framework 6 وبسایت پرووید کاملاً و به طور مفصل صحبت کرده ایم. پس از ایجاد شدن migration در فایل مربوط به migration، متد Up را پیدا کرده و کد زیر را در آن قرار دهید.

public partial class spGetStudents : Migration
{
    protected override void Up(MigrationBuilder migrationBuilder)
    {
        var sp = @"CREATE PROCEDURE [dbo].[GetStudents]
                    @FirstName varchar(50)
                AS
                BEGIN
                    SET NOCOUNT ON;
                    select * from Students where FirstName like @FirstName +'%'
                END";

        migrationBuilder.Sql(sp);
    }

    protected override void Down(MigrationBuilder migrationBuilder)
    {

    }
}

پس از انجام این کار با وارد کردن دستور Update-database در NuGet Package Manager Console اقدام به ساختن stored procedure مورد نظر در دیتابیس کنید. در رابطه با NuGet در بسته ی آموزش ویدئویی Nuget وبسایت پرووید به طور مفصل صحبت کرده ایم.

در قسمت بعدی از این آموزش در رابطه با اجرا کردن stored procedure ها با استفاده از متد FromSql صحبت خواهیم کرد.

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *