คำหลักเสมือนนี้เกี่ยวข้องกับหัวข้อของการโหลดข้อมูลจากเฟรมเวิร์กเอนทิตี (การโหลดแบบสันหลังยาว, การโหลดแบบกระตือรือร้นและการโหลดแบบชัดแจ้ง)
คุณควรใช้คำหลักเสมือนเมื่อคุณต้องการโหลดข้อมูลด้วยการโหลดแบบสันหลังยาว
lazy loadingเป็นกระบวนการที่เอนทิตีหรือชุดของเอนทิตีถูกโหลดจากฐานข้อมูลโดยอัตโนมัติในครั้งแรกที่มีการเข้าถึง
ตัวอย่างเช่นเมื่อใช้คลาสเอนทิตีบล็อกที่กำหนดไว้ด้านล่างโพสต์ที่เกี่ยวข้องจะถูกโหลดในครั้งแรกที่เข้าถึงคุณสมบัติการนำทางโพสต์:
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; }
}
การโหลด Lazy ของคอลเลกชันกระทู้สามารถปิดได้โดยทำให้คุณสมบัติการโพสต์ไม่ใช่แบบเสมือน
หากการโหลดแบบขี้เกียจปิดอยู่การโหลดคอลเลกชันโพสต์ยังสามารถทำได้โดยใช้การโหลดแบบกระตือรือร้น (โดยใช้วิธีการรวม) หรือการโหลดเอนทิตีที่เกี่ยวข้องอย่างชัดเจน (โดยใช้วิธีโหลด)
กำลังโหลดอย่างกระตือรือร้น:
using (var context = new BloggingContext())
{
// Load all blogs and related posts
var blogs1 = context.Blogs
.Include(b => b.Posts)
.ToList();
}
โหลดอย่างชัดเจน:
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();
}