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

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

اجرا کردن stored procedure ها با استفاده از متد FromSql

در یکی از آموزش های قبلی از وبسایت پرووید، در رابطه با استفاده از متد FromSql در Entity Framework Core صحبت کردیم. با استفاده از این متد می توانیم دستورات خام sql یا اصطلاحاً raw sql را بر روی دیتابیس اجرا کنیم. به منظور اجرا کردن stored procedure ها نیز می توانیم از همین متد استفاده کنیم. البته استفاده کردن از این متد برای اجرا کردن stored procedure ها محدودیت هایی نیز دارد.

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

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

در دیتابیس می توانیم یک stored procedure به نام GetStudents را به همراه یک پارامتر ورودی یا اصطلاحاً input parameter به شکل زیر اجرا کنیم.

GetStudents "Bill"
-- or
exec GetStudents "Bill"

همین کار را نیز می توانیم با Entity Framework Core انجام دهیم. کد زیر این موضوع را نشان می دهد.

var context = new SchoolContext(); 

var students = context.Students.FromSql("GetStudents 'Bill'").ToList();

علاوه بر این، می توان با استفاده از قابلیت string interpolation در سی شارپ، همین کار را به صورت زیر انجام داد.

var name = "Bill";

var context = new SchoolContext(); 
var students = context.Students
                      .FromSql($"GetStudents {name}")
                      .ToList();

//or
//var students = context.Students.FromSql($"exec GetStudents {name}").ToList();

در رابطه با سی شارپ در بسته ی آموزش ویدئویی سی شارپ دات نت و بسته ی آموزش ویدئویی مباحث پیشرفته در برنامه نویسی سی شارپ می توانید به طور جدی تر و عمیق تر مطالعه کنید. علاوه بر این، با تعریف یک object از کلاس SqlParameter می توانید جهت یا اصطلاحاً direction یک پارامتر را با مقدادیر IN یا OUT تنظیم کنید. این موضوع در کد زیر نشان داده شده است.

var context = new SchoolContext(); 
var param = new SqlParameter("@FirstName", "Bill");
//or
/*var param = new SqlParameter() {
                    ParameterName = "@FirstName",
                    SqlDbType =  System.Data.SqlDbType.VarChar,
                    Direction = System.Data.ParameterDirection.Input,
                    Size = 50,
                    Value = "Bill"
};*/

var students = context.Students.FromSql("GetStudents @FirstName", param).ToList();

علاوه بر این، می توانید از @p0 برای پارامتر اول و @p1 برای پارامتر دوم و الی اخر استفاده کنید. این موضوع نیز در کد زیر نشان داده شده است.

var context = new SchoolContext(); 

var students = context.Students.FromSql("GetStudents @p0","Bill").ToList();

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

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

از آنجایی که در حال حاضر named parameter ها در Entity Framework Core پشتیبانی نمی شوند، دستور بالا از @p0 برای مشخص کردن پارامتر اول استفاده کرده است. در رابطه با مفهوم named parameter ها در بسته ی آموزش ویدئویی سی شارپ دات نت وبسایت پرووید به طور مفصل صحبت کرده ایم.

نکته ی بسیار مهمی که باید به آن اشاره کنیم اینکه به طور خودکار نتایج یک برگردانده شده از یک stored procedure توسط کلاس context و change tracker آن track می شوند. علاوه بر این، اگر دستور FromSql را چندین بار برای اجرا کردن یک stored procedure یکسان با پارامترهای یکسان call کنید، فقط یکی از آن result set ها track می شوند. برای مثال، در کد زیر دستور FromSql سه بار برای اجرا کردن یک stored procedure یکسان استفاده شده است.

var context = new SchoolContext(); 

var list1 = context.Students.FromSql("GetStudents 'Bill'").ToList();
var list2 = context.Students.FromSql("GetStudents 'Bill'").ToList();
var list3 = context.Students.FromSql("GetStudents 'Bill'").ToList();

نتیجه ی برگردانده شده از این سه دستور کاملاً یکسان است. بنابراین، فقط یک result set از این سه result set در نظر گرفته شده و cache و track می شود. در رابطه با یادگیری عمیق و کامل Entity Framework Core توصیه می کنیم حتماً بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core و بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0 وبسایت پرووید را استفاه کنید.

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

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

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