Kata kunci virtual ini terkait dengan topik memuat data dari kerangka entitas (lazy loading, eager loading, dan eksplisit loading).
Anda harus menggunakan kata kunci virtual , ketika Anda ingin memuat data dengan pemuatan malas.
lazy loading adalah proses di mana suatu entitas atau kumpulan entitas secara otomatis diambil dari database saat pertama kali diakses.
Misalnya, saat menggunakan kelas entitas Blog yang ditentukan di bawah, Posting terkait akan dimuat saat pertama kali properti navigasi Tulisan diakses:
public class Blog
{
public int BlogId { get; set; }
public string Name { get; set; }
public string Url { get; set; }
public string Tags { get; set; }
public virtual ICollection<Post> Posts { get; set; }
}
Pemuatan malas dari koleksi Posting dapat dimatikan dengan membuat properti Posting non-virtual.
jika lazy loading tidak aktif, Memuat koleksi Posts masih dapat dicapai menggunakan eager loading (menggunakan metode Sertakan) atau secara eksplisit memuat entitas terkait (menggunakan metode Load).
Bersemangat memuat:
using (var context = new BloggingContext())
{
// Load all blogs and related posts
var blogs1 = context.Blogs
.Include(b => b.Posts)
.ToList();
}
Memuat secara eksplisit:
using (var context = new BloggingContext())
{
var blog = context.Blogs.Find(1);
// Load the posts related to a given blog
context.Entry(blog).Collection(p => p.Posts).Load();
}