Entendiendo el código primero de las propiedades virtuales

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 lo que hacen las propiedades con virtual. Si compruebo la base de datos, no existe una caja de columnas para cada una de las propiedades, solo para las demás.

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

Respuestas a la pregunta(3)

Su respuesta a la pregunta