• Entity Framework da IEnumerable va IQueryable
  • IEnumerable
  • IQueryable
  • Dasturiy injiniring (EntityFramework 6)




    Download 1,39 Mb.
    bet32/53
    Sana30.11.2023
    Hajmi1,39 Mb.
    #108476
    1   ...   28   29   30   31   32   33   34   35   ...   53
    Bog'liq
    Dasturiy injiniring

    Qiymatlar summasi
    Sum() metodi orqali qiymatlar summasi aniqlanadi:
    using (PhoneContext db = new PhoneContext())
    {
    // barcha telefonlar narxlari summasi
    int sum1 = db.Phones.Sum(p => p.Price);
    // Samsung firmasi telefonlar narxlari summasi
    int sum2 = db.Phones.Where(p => p.Name.Contains("Samsung"))
    .Sum(p => p.Price);
    Console.WriteLine(sum1);
    Console.WriteLine(sum2);
    }

    Entity Framework da IEnumerable va IQueryable


    LINQ kengaytirma metodlari orqali ikkita ob’ekt qaytarilishi mumkin: IEnumerable va IQueryable. Bir tomondan, IQueryable interfeysi IEnumerable dan vorislanadi. Shuning uchun IQueryable ob’ekti o’z navbatida IEnumerable ob’ekt hisoblanadi. Ammo real hayotda ushbu amallar biroz murakkab hisoblanadi. Ushbu ob’ektlar o'rtasidagi interfeyslarda farq funksionallikda hisoblanadi. Shuning uchun ularni o’zaro almashtirib bo’lmaydi.
    IEnumerable interfeysi System.Collections nomlar fazosida joylashgan. IEnumerable ob’ekti xotiradagi ma’lumotlar to’plamidan iborat bo’ladi va ushbu ma’lumotlar bilan faqat oldinga harakatlanishni ta'minlaydi. IEnumerable ob’ekti orqali aniqlangan so’rov shu lahzada to’liq bajariladi va dastur orqali undan ma’lumot olish juda tez amalga oshiriladi.
    IEnumerable so’rovi bajarilishida barcha ma’lumotlar yuklanadi. Agar bizga filtrlash lozim bo’lsa, filtrlash mijoz tomonida amalga oshiriladi.
    IQueryable interfeysi System.Linq nomlar fazosida joylashgan. IQueryable ob’ekti DB ga masofaviy dostupni amalga oshiradi va ma’lumotlar ro'yxatida oldinga va orqaga harakatlanish imkonini beradi. So’rovni shakllantirish jarayonida qaytariladigan ob’ekt sifatida IQueryable ishtirok etadi va ushbu jarayon optimallashtiriladi. Natijada so’rovni amalga oshirish jarayonida kam xotira talab qilinadi, tarmoq nagruzkaga tushmaydi. Ammo so’rovlar bajarilishi IEnumerable ob’ektga nisbatan sekin amalga oshirilishi mumkin.
    Ikkita bir xil shakldagi ifodani olamiz. IEnumerable ob’ekti:
    using (PhoneContext db = new PhoneContext())
    {
    IEnumerable phoneIEnum = db.Phones;
    phoneIEnum = phoneIEnum.Where(p => p.Id > id);
    }

    Ushbu ifodaga mos so’rov quyidagicha:


    SELECT
    [Extent1].[Id] AS [Id],
    [Extent1].[Name] AS [Name],
    [Extent1].[Company] AS [Company]
    FROM [dbo].[Phones] AS [Extent1]



    Download 1,39 Mb.
    1   ...   28   29   30   31   32   33   34   35   ...   53




    Download 1,39 Mb.

    Bosh sahifa
    Aloqalar

        Bosh sahifa



    Dasturiy injiniring (EntityFramework 6)

    Download 1,39 Mb.