Dieses virtuelle Schlüsselwort bezieht sich auf das Thema Laden von Daten aus dem Entity Framework (verzögertes Laden, eifriges Laden und explizites Laden).
Sie sollten das virtuelle Schlüsselwort verwenden, wenn Sie Daten mit verzögertem Laden laden möchten.
Lazy Loading ist der Prozess, bei dem eine Entität oder Sammlung von Entitäten beim ersten Zugriff automatisch aus der Datenbank geladen wird.
Wenn Sie beispielsweise die unten definierte Blog-Entitätsklasse verwenden, werden die zugehörigen Posts beim ersten Zugriff auf die Navigationseigenschaft "Posts" geladen:
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; }
}
Das verzögerte Laden der Posts-Sammlung kann deaktiviert werden, indem die Posts-Eigenschaft nicht virtuell gemacht wird.
Wenn das verzögerte Laden deaktiviert ist, kann das Laden der Posts-Sammlung weiterhin durch eifriges Laden (mithilfe der Include-Methode) oder explizites Laden verwandter Entitäten (mithilfe der Load-Methode) erreicht werden.
Eifriges Laden:
using (var context = new BloggingContext())
{
// Load all blogs and related posts
var blogs1 = context.Blogs
.Include(b => b.Posts)
.ToList();
}
Explizites Laden:
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();
}