Esta palabra clave virtual está relacionada con el tema de cargar datos desde el marco de la entidad (carga diferida, carga ansiosa y carga explícita).
que puedes usar virtuales palabra clave, cuando se desea cargar datos con carga diferida.
lazy loading es el proceso mediante el cual una entidad o colección de entidades se carga automáticamente desde la base de datos la primera vez que se accede.
Por ejemplo, cuando se utiliza la clase Blog entidad se define a continuación, los mensajes relacionados se cargará la primera vez que se accede a la propiedad de navegación Mensajes:
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; }
}
carga Lazy de la colección de Mensajes se puede apagar por haciendo que la propiedad de Publicaciones no sea virtual.
si la carga diferida está desactivada, la carga de la recopilación de publicaciones aún se puede lograr usando la carga ansiosa (usando el método Incluir) o cargando entidades relacionadas (utilizando el método Load).
impaciencia Carga:
using (var context = new BloggingContext())
{
// Load all blogs and related posts
var blogs1 = context.Blogs
.Include(b => b.Posts)
.ToList();
}
explícitamente Carga:
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();
}
No hay ninguna otra razón para hacer las propiedades virtual. Las propiedades de navegación se marcan como virtuales para la carga diferida y las propiedades escalares se marcan como virtuales para el seguimiento de cambios. –
¿Qué son las propiedades de navegación y cuáles son las propiedades escalares? –
@AbidAli: Creo que una propiedad de navegación es una clave externa (un tipo de clase de entidad) o una relación de uno a muchos (de tipo ICollection <>). Una propiedad escalar es un tipo base (int, string, ..) o ComplexType (que es solo una estructura de tipos base). –