이 가상 키워드는 엔티티 프레임 워크에서 데이터를로드하는 주제 (지연 한로드, 열성적인로드 및 명시 적로드)와 관련이 있습니다.
지연 로딩으로 데이터를로드 하려면 virtual 키워드를 사용해야합니다 .
지연로드 는 엔티티 또는 엔티티 콜렉션이 처음 액세스 될 때 데이터베이스에서 자동으로로드되는 프로세스입니다.
예를 들어, 아래에 정의 된 블로그 엔티티 클래스를 사용하는 경우 게시물 탐색 특성에 처음 액세스 할 때 관련 게시물이로드됩니다.
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; }
}
Posts 속성을 비가 상으로 설정하여 Posts 컬렉션의 지연로드를 해제 할 수 있습니다.
지연로드가 해제 된 경우에도 간결한로드 (포함 메소드 사용) 또는 관련 엔티티 명시 적로드 (로드 메소드 사용)를 사용하여 게시물 콜렉션로드를 계속 수행 할 수 있습니다.
열심히로드 :
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();
}