usar mvc modelo metodo cuando crear codigos basicos c# entity-framework entity-framework-4.1

mvc - virtual en c#



Comprender las primeras propiedades virtuales del código (3)

Cuando crea una propiedad o método marcado con la palabra clave virtual, se le permitirá sobrescribirlo en una clase derivada, ofreciendo así a su método un comportamiento más especializado dependiendo de los objetos que cree.

En el caso de Entity Framework, también es una convención que señala que se usa el comportamiento de carga diferida. Aquí hay una pregunta sobre este asunto: Entity Framework 4.1 Virtual Properties

Hola, estoy aprendiendo a trabajar con Entity Framework Code First y parece que no puedo entender algo. He creado tres modelos basados ​​en un tutorial:

public class Course { public int CourseID { get; set; } public string Title { get; set; } public int Credits { get; set; } public virtual ICollection<Enrollment> Enrollments{ get; set; } } public class Enrollment { public int EnrollmentID { get; set; } public int CourseID { get; set; } public int StudentID { get; set; } public decimal? Grade { get; set; } public virtual Course Course { get; set; } public virtual Student Student { get; set; } } public class Student { public int StudentID { get; set; } public string LastName { get; set; } public string FirstMidName { get; set; } public DateTime EnrollmentDate { get; set; } public virtual ICollection<Enrollment> Enrollments { get; set; } }

Mi problema es que no entiendo qué hacen las propiedades con virtual. Si reviso la base de datos, no hay ninguna columna para cada una de las propiedades, solo para las demás.

Entonces, ¿qué sucede cuando creas una propiedad con la palabra clave virtual?


Las propiedades virtuales están ahí para permitir la carga lenta


Se usa para administrar la carga diferida y el seguimiento de cambios .

EF generará tipos de proxy en tiempo de ejecución, que son tipos generados dinámicamente que heredan de sus clases POCO y agregan todas las cosas de EF para administrar la carga lenta / seguimiento de cambios en las propiedades virtuales anuladas .

Así que virtual no es una "palabra clave mágica" aquí, virtual está aquí para que sus POCO puedan heredarse con código adicional relacionado con EF en tiempo de ejecución.