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

در قسمت قبلی از این آموزش در رابطه با انجام Multiple Include در Entity Framework Core صحبت کردیم.

دستور ThenInclude در Entity Framework Core

جالب است بدانید که Entity Framework Core یک Extension Method جدید با نام ThenInclude را برای Eager Load کردن چندین سطح از Related Entity های مربوط به یک Entity را معرفی کرد. کد زیر را در نظر بگیرید.

var context = new SchoolContext();

var student = context.Students.Where(s => s.FirstName == "Bill")
                        .Include(s => s.Grade)
                            .ThenInclude(g => g.Teachers)
                        .FirstOrDefault();

در این کد دستور Include(s => s.Grade) باعث Load شدن Navigation Property ای با نام Grade از Student می ‌شود.

آموزش .NET Core برای برنامه نویسان ویندوز

از شما دعوت می کنیم که از بسته ی آموزش .NET Core برای برنامه نویسان ویندوز دیدن کنید.

سپس دستور ThenInclude(g => g.Teachers) باعث Eager Load شدن Collection Property ای از نوع Teacher که مربوط Grade است می‌ شود.

بسته ی آموزش شروع به کار با Entity Framework Core

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

دقت کنید که همیشه باید دستور ThenInclude را پس از دستور Include مورد استفاده قرار بگیرد. دستور سی شارپ بالا به کد های SQL ای که در قسمت پایین آورده شده ‌اند ترجمه خواهند شد.

SELECT TOP(1) [s].[StudentId], [s].[DoB], [s].[FirstName], [s].[GradeId], [s].[LastName],
         [s].[MiddleName], [s.Grade].[GradeId], [s.Grade].[GradeName], [s.Grade].[Section]
FROM [Students] AS [s]
LEFT JOIN [Grades] AS [s.Grade] ON [s].[GradeId] = [s.Grade].[GradeId]
WHERE [s].[FirstName] = N'Bill'
ORDER BY [s.Grade].[GradeId]
Go

SELECT [s.Grade.Teachers].[TeacherId], [s.Grade.Teachers].[GradeId], [s.Grade.Teachers].[Name]
FROM [Teachers] AS [s.Grade.Teachers]
INNER JOIN (
    SELECT DISTINCT [t].*
    FROM (
        SELECT TOP(1) [s.Grade0].[GradeId]
        FROM [Students] AS [s0]
        LEFT JOIN [Grades] AS [s.Grade0] ON [s0].[GradeId] = [s.Grade0].[GradeId]
        WHERE [s0].[FirstName] = N'Bill'
        ORDER BY [s.Grade0].[GradeId]
    ) AS [t]
) AS [t0] ON [s.Grade.Teachers].[GradeId] = [t0].[GradeId]
ORDER BY [t0].[GradeId]
go

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

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

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