Aida-Hagh / EF-Core

Learn EF Core
1 stars 0 forks source link

Explicit Loading #17

Open Aida-Hagh opened 4 months ago

Aida-Hagh commented 4 months ago

به معنای بارگذاری صریح و دستی داده‌های وابسته است. این روش زمانی استفاده می‌شود که شما به کنترل بیشتری بر روی زمان و چگونگی بارگذاری داده‌ها نیاز داریم. برخلاف Eager Loading و Lazy Loading که به صورت خودکار عمل می‌کنند در Explicit Loading باید به صورت دستی این عملیات را انجام دهیم. برای استفاده از Explicit Loading در EF Core، از متدهای Load و Collection و Reference استفاده می‌شود.

مثال ۱: بارگذاری صریح یک رابطه یک به یک یا یک به چند فرض کنید یک مدل Product داریم که به یک مدل Category وابسته است. برای بارگذاری صریح داده‌های Category یک Product خاص، از کد زیر استفاده می‌کنیم:

var product = context.Products.Find(1);

// بارگذاری صریح دسته بندی مرتبط با محصول
context.Entry(product).Reference(p => p.Category).Load();

var categoryName = product.Category.Name;

در این مثال، context.Entry(product).Reference(p => p.Category).Load(); به EF Core می‌گوید که داده‌های مرتبط با Category را برای Product مشخص بارگذاری کند.

مثال ۲: بارگذاری صریح یک رابطه چند به چند فرض کنید یک مدل Student داریم که به یک مدل Course به صورت چند به چند وابسته است. برای بارگذاری صریح داده‌های Course مرتبط با یک Student خاص، از کد زیر استفاده می‌کنیم:

var student = context.Students.Find(1);

// بارگذاری صریح دوره های مرتبط با دانشجو
context.Entry(student).Collection(s => s.StudentCourses).Load();

foreach (var studentCourse in student.StudentCourses)
{
    context.Entry(studentCourse).Reference(sc => sc.Course).Load();
}

var courses = student.StudentCourses.Select(sc => sc.Course).ToList();