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

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

متد FromSql و LINQ Operator ها

همانطور که گفتیم امکان استفاده از متد FromSql و LINQ Operator ها در کنار هم وجود دارد. لطفاً کد زیر را بررسی کنید.

string name = "Bill";

var context = new SchoolContext();
var students = context.Students
                    .FromSql("Select * from Students where Name = '{0}'", name)
                    .OrderBy(s => s.StudentId)
                    .ToList();

در کد بالا، با ترکیب شدن دو متد FromSql و OrderBy دستور sql زیر بر روی دیتابیس اجرا می شود.

exec sp_executesql N'SELECT [s].[StudentId], [s].[Name]
FROM (
    Select * from Students where Name = ''@p0''
) AS [s]
ORDER BY [s].[StudentId]',N'@p0 nvarchar(4000)',@p0=N'Bill'
go

توصیه می کنیم از بسته ی آموزش ویدئویی SQL و مایکروسافت Access از وبسایت پرووید و همچنین بسته ی آموزش ویدئویی اصول بانک های اطلاعاتی رابطه ای استفاده کنید.

محدودیت های متد FromSql

علی رغم تمامی جذابیت هایی که متد FromSql دارد، محدودیت هایی نیز در استفاده از این متد وجود دارد که باید از آنها آگاه باشید.

دستورات sql ای که برای این متد تعریف می شوند و اجرا می شوند باید entity هایی از جنس همان DbSet ای که متد FromSql بر روی آن اجرا می شود برگردانند. برای مثال، اگر متد FromSql بر روی DbSet<Student> اجرا شده است، نمی تواند entity هایی از نوع Course برگرداند.

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

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

دستور sql ای که برای متد FromSql در نظر میگیرید، باید تمامی فیلدهای جدول مورد نظر را برگرداند. به عبارت دیگر اگر از بین فیلدهای یک جدول فقط تعدادی را انتخاب کرده باشید یک exception ایجاد خواهد. برای مثال، دستور زیر

context.Students.FromSql("Select StudentId, LastName from Students).ToList();

باعث throw شدن یک exception می شود. به منظور یادگیری هر چه عمیق تر مباحث سی شارپ و exception ها بسته ی آموزش ویدئویی Debugging در سی شارپ و بسته ی آموزش ویدئویی سی شارپ دات نت وبسایت پرووید را توصیه می کنیم.

دستور sql ای که به عنوان پارامتر متد FromSql تعریف کرده اید نمی تواند شامل دستورات join برای خواندن related entity ها باشد. به منظور خواندن related entity ها باید از متد Include پس از متد FromSql برای انجام eager loading استفاده کنیم. در رابطه با این موضوع نیز در بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core 2.0 و بسته ی آموزش ویدئویی شروع به کار با Entity Framework Core به طور مفصل صحبت کرده ایم.

خب این آموزش از وبسایت پرووید را نیز در این قسمت به پایان می رسانیم. امیدواریم که این آموزش نیز مورد توجه تمامی دوستان عزیز قرار گرفته باشد. توصیه می کنیم حتماً از آموزش های رایگان دیگر وبسایت پرووید در رابطه با Entity Framework Core دیدن کنید.

پاسخی بگذارید

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