پرشین تم مقالات آموزش LINQ و پرس و جوهای SQL خام در EF Core

آموزش LINQ و پرس و جوهای SQL خام در EF Core

image profile پرشین تم - 13 دی 1403 - 16:07 دانلود مقاله

بیایید LINQ (پرس و جوی یکپارچه زبان) را با Entity Framework Core (EF Core) بررسی کنیم! LINQ یک زبان پرس و جو قدرتمند است که می توانید از آن برای جستجوی داده ها از منابع داده های مختلف از جمله پایگاه های داده استفاده کنید. در اینجا برخی از جنبه ها و مثال های کلیدی برای کمک به شما برای شروع آورده شده است:

آموزش LINQ و پرس و جوهای SQL خام در EF Core

 

پرس و جوهای اساسی LINQ

برای بازیابی داده ها می توانید با برخی از پرس و جوهای اساسی LINQ شروع کنید:

using (var context = new YourDbContext())
{
    var products = context.Products.ToList();
}

 

فیلتر کردن داده ها

using (var context = new YourDbContext())
{
    var expensiveProducts = context.Products
        .Where(p => p.Price > 100)
        .ToList();
}

 

مرتب سازی داده ها

می توانید داده ها را با استفاده از OrderBy، OrderByDescending، ThenBy و ThenByDescending مرتب کنید:

using (var context = new YourDbContext())
{
    var sortedProducts = context.Products
        .OrderBy(p => p.Name)
        .ThenByDescending(p => p.Price)
        .ToList();
}

 

انتخاب فیلدهای خاص

برای انتخاب فیلدهای خاص، می توانید از عبارت Select استفاده کنید:

using (var context = new YourDbContext())
{
    var productNames = context.Products
        .Select(p => p.Name)
        .ToList();
}

 

پیوند جداول

می‌توانید داده‌ها را از چندین جدول به هم پیوند دهید:

using (var context = new YourDbContext())
{
    var query = from p in context.Products
                join c in context.Categories on p.CategoryId equals c.CategoryId
                select new { p.Name, CategoryName = c.Name };
   
    var productCategories = query.ToList();
}

 

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

برای گروه بندی داده ها، می توانید از عبارت GroupBy استفاده کنید:

using (var context = new YourDbContext())
{
    var groupedProducts = context.Products
        .GroupBy(p => p.CategoryId)
        .Select(g => new { CategoryId = g.Key, Products = g.ToList() })
        .ToList();
}

 

داده های محاسباتی

می توانید از روش های مختلف تجمیع مانند Count, Sum, Average, Min, و Max استفاده کنید:

using (var context = new YourDbContext())
{
    var totalProducts = context.Products.Count();
    var averagePrice = context.Products.Average(p => p.Price);
}

 

پرس و جوهای ناهمزمان

EF Core از عملیات ناهمزمان پشتیبانی می کند، که برای بهبود پاسخگویی برنامه شما ضروری است:

using (var context = new YourDbContext())
{
    var products = await context.Products.ToListAsync();
}

 

واکشی داده های مرتبط با Including

using (var context = new YourDbContext())
{
    var orders = context.Orders
        .Include(o => o.OrderItems)
        .ThenInclude(oi => oi.Product)
        .ToList();
}

 

حالا بیایید به جستجوهای SQL خام در EF Core بپردازیم! هنگامی که قابلیت های LINQ EF Core کاملاً نیازهای شما را برآورده نمی کند، پرس و جوهای خام SQL جایگزین قدرتمند و انعطاف پذیری را ارائه می دهند. در اینجا یک راهنمای سریع برای شروع شما آورده شده است:

 

پرس و جو اولیه خام SQL

می توانید از روش های FromSqlRaw یا FromSqlInterpolated برای اجرای پرس و جوهای SQL خام که انواع موجودیت را برمی گرداند استفاده کنید:

using (var context = new YourDbContext())
{
    var products = context.Products
        .FromSqlRaw("SELECT * FROM Products")
        .ToList();
}

 

پرس و جوهای پارامتردار

برای جلوگیری از حملات تزریق SQL، همیشه از پرس و جوهای پارامتری استفاده کنید:

var productId = 1;
using (var context = new YourDbContext())
{
    var product = context.Products
        .FromSqlInterpolated($"SELECT * FROM Products WHERE ProductId = {productId}")
        .FirstOrDefault();
}

 

اجرای رویه های ذخیره شده

همچنین می توانید رویه های ذخیره شده را اجرا کنید:

using (var context = new YourDbContext())
{
    var products = context.Products
        .FromSqlRaw("EXEC GetProducts")
        .ToList();
}

 

پرس و جوهای Non-Entity

گاهی اوقات لازم است پرس و جوهایی را اجرا کنید که به یک نوع موجودیت نگاشت نمی شوند. می توانید از متد Database.ExecuteSqlRaw برای این سناریوها استفاده کنید:

using (var context = new YourDbContext())
{
    var rowsAffected = context.Database.ExecuteSqlRaw(
        "UPDATE Products SET Price = Price * 1.1 WHERE Category = 'Electronics'"
    );
}

 

SQL خام برای پرس و جوهای پیچیده

اگر پرس و جوهای پیچیده تری دارید، SQL خام بسیار مفید است. در اینجا مثالی از اتصال دو جدول آورده شده است:

using (var context = new YourDbContext())
{
    var query = @"
        SELECT p.ProductName, c.CategoryName 
        FROM Products p
        JOIN Categories c ON p.CategoryId = c.CategoryId
    ";

    var result = context.Products
        .FromSqlRaw(query)
        .ToList();
}

 

ترکیب کوئری خام با Including

همچنین می توانید داده های مرتبط را با استفاده از پرس و جوهای SQL خام اضافه کنید:

using (var context = new YourDbContext())
{
    var orders = context.Orders
        .FromSqlRaw("SELECT * FROM Orders")
        .Include(o => o.OrderItems)
        .ToList();
}

 

نکاتی برای استفاده از SQL خام در EF Core

  • همیشه از پارامترها برای جلوگیری از حملات تزریق SQL استفاده کنید.
  • از FromSqlRaw برای پرس و جوهای SQL خام و FromSqlInterpolated برای رشته های درون یابی شده استفاده کنید.
  • اطمینان حاصل کنید که پرس و جوهای SQL خام شما با شکل موجودیت های شما مطابقت دارند.
  • به نحو SQL مخصوص پایگاه داده توجه داشته باشید که ممکن است در ارائه دهندگان پایگاه داده مختلف قابل حمل نباشد.

 

پرس و جوهای SQL خام را می توان با پایگاه داده های مختلف در EF Core، مانند SQL Server، MySQL، و SQLite استفاده کرد. EF Core از ارائه دهندگان پایگاه داده مختلف پشتیبانی می کند و شما می توانید پرس و جوهای SQL خام را در برابر هر یک از آنها اجرا کنید، به شرطی که به گویش SQL خاص آن پایگاه داده پایبند باشید.

با خرید اشتراک می توانید تا چندین برابر مبلغ خرید اشتراک خود قالب های HTML ، سورس کدهای آماده و یا مقالات دانلود کنید
شما می توانید تنها فقط با مبلغ 3,000,000 میلیون تومان وب سایت سفارسی برای خود داشته باشید
محبوب ترین مقالات
تفاوت بین CSS و SCSS چیست؟ تفاوت بین CSS و SCSS چیست؟
category برنامه نویسی 07 اسفند 1402
تفاوت بین RDBMS و DBMS تفاوت بین RDBMS و DBMS
category برنامه نویسی 02 فروردین 1403
کاوش در معماری GPT-3 کاوش در معماری GPT-3
category هوش مصنوعی 12 اسفند 1402
کلمات کلیدی در SQL کلمات کلیدی در SQL
category برنامه نویسی 01 خرداد 1403
تفاوت بین CSS، SASS و SCSS چیست؟ تفاوت بین CSS، SASS و SCSS چیست؟
category برنامه نویسی 13 اسفند 1402
ChatGPT چیست؟ ChatGPT چیست؟
category هوش مصنوعی 12 اسفند 1402
انواع Join در SQL انواع Join در SQL
category برنامه نویسی 02 فروردین 1403
آخرین مقالات
آموزش کامل و جامع Git آموزش کامل و جامع Git Git یک سیستم کنترل نسخه قدرتمند که برای مدیریت و ردیابی تغییرات در کد شما ضروری است. ما در این آموزش اصول اولیه را پوش...
category برنامه نویسی 21 دی 1403
React چیست؟ آشنایی با اصول و تاریخچه React React چیست؟ آشنایی با اصول و تاریخچه React React که با نام‌های React.js یا ReactJS نیز شناخته می‌شود، یک کتابخانه جاوا اسکریپت برای ساخت رابط‌های کاربری است که ت...
category برنامه نویسی 19 دی 1403
معرفی React و سرفصل های دوره آموزش React معرفی React و سرفصل های دوره آموزش React React یک کتابخانه محبوب جاوا اسکریپت است که برای ساخت رابط های کاربری، به ویژه برنامه های تک صفحه ای استفاده می شود. ا...
category برنامه نویسی 19 دی 1403