شماره تماس 09336863931 | 09178169907 پست الکترونیک provid.ir@gmail.com

استفاده از دستورات خام SQL در Entity Framework Core #3

استفاده از دستورات خام SQL در Entity Framework Core #3 را در این قسمت از وبسایت آموزش برنامه نویسی پرووید دانلود کنید.

استفاده از دستورات خام SQL در Entity Framework Core #3

این در حالی است که متد FromSql و دستورات LINQ ی که در کنار آن استفاده شده اند با هم ترکیب شده و به عنوان یک Query تک به سمت بانک اطلاعاتی ارسال می‌شوند. در کدی که در ادامه مشاهده می کنید فقط Customer هایی که تمامی شرط های مربوط به دستور SQL و دستورات LINQ را دارند از بانک اطلاعاتی خوانده می شوند.

var custs = db.Customers
 .FromSql("Select * from Customers Where Status = 1")
 .Where(c => c.LastOrderDate < DateTime.Now)
 .ToList();

این قابلیت امکان استفاده از دستورات LINQ برای خواندن داده های مرتبط با هم (که در دستورات SQL از طریق JOIN خوانده می شوند) را می دهد. به منظور انجام این کار از دستور Include استفاده می کنیم. در کد زیر علاوه بر خواندن اطلاعات مربوط به Customer ها، اطلاعات مربوط به SalesOrder آنها نیز خوانده شده است.

var custs = db.Customers
 .FromSql("Select * from Customers")
 .Include(c => c.SalesOrders)
 .ToList();

به منظور استفاده از متد FromSql برای اجرای Stored Procedure ها نیز می توانید کلمه Execute در ابتدای دستورات SQL خود قرار دهید تا Stored Procedure مربوطه اجرا شود. البته این موضوع به شرطی اتفاق می‌افتد که دستور SQL تمامی نیازمندی های آن Stored Procedure از قبیل پارامترهای ورودی را فراهم کند.

یکی دیگر از قابلیت های بسیار جذاب متد FromSql استفاده کردن از قابلیت های SQL ی است که دستورات LINQ از آنها پشتیبانی نمی کنند. برای مثال در کد زیر از متد FromSql استفاده شده است. علاوه بر این استفاده از Table-valued Function ها نیز در کنار دستورات LINQ در کد زیر قابل مشاهده است.

var custs = db.Customers
 .FromSql("Select * from CustomersWithOrdersOver(10000)")
 .Include(c => c.SalesOrders)
 .ToList();

به منظور پیاده‌سازی قابلیتی که در کد بالا مشاهده کردید Entity Framework Core دستور SQL شما را درون یک Subquery قرار می‌دهد. نکته مهم در این است که برای اینکه Entity Framework Core بتوانند این کار را انجام بدهد باید در دستورات SQL خود کدی را قرار ندهید که نتوان آن را در یک Subquery قرار داد. برای مثال در پایان دستورات SQL خود سمی کالن قرار ندهید. به منظور استفاده از متد FromSql باید پکیج Entity FrameworkCore.Relational را به پروژه خود اضافه کنید.

نظر بدهید

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