Bagikan melalui


Pemuatan Eksplisit Data Terkait

Pemuatan eksplisit

Anda dapat secara eksplisit memuat properti navigasi melalui DbContext.Entry(...) API.

using (var context = new BloggingContext())
{
    var blog = context.Blogs
        .Single(b => b.BlogId == 1);

    context.Entry(blog)
        .Collection(b => b.Posts)
        .Load();

    context.Entry(blog)
        .Reference(b => b.Owner)
        .Load();
}

Anda juga dapat secara eksplisit memuat properti navigasi dengan menjalankan kueri terpisah yang mengembalikan entitas terkait. Jika pelacakan perubahan diaktifkan, maka ketika kueri mewujudkan entitas, EF Core akan secara otomatis mengatur properti navigasi entitas yang baru dimuat untuk merujuk ke entitas apa pun yang sudah dimuat, dan mengatur properti navigasi entitas yang sudah dimuat untuk merujuk ke entitas yang baru dimuat.

Anda juga bisa mendapatkan kueri LINQ yang mewakili konten properti navigasi.

Ini memungkinkan Anda menerapkan operator lain melalui kueri. Misalnya, menerapkan operator agregat atas entitas terkait tanpa memuatnya ke dalam memori.

using (var context = new BloggingContext())
{
    var blog = context.Blogs
        .Single(b => b.BlogId == 1);

    var postCount = context.Entry(blog)
        .Collection(b => b.Posts)
        .Query()
        .Count();
}

Anda juga dapat memfilter entitas terkait mana yang dimuat ke dalam memori.

using (var context = new BloggingContext())
{
    var blog = context.Blogs
        .Single(b => b.BlogId == 1);

    var goodPosts = context.Entry(blog)
        .Collection(b => b.Posts)
        .Query()
        .Where(p => p.Rating > 3)
        .ToList();
}