I have found a work-around, that being to check if the association reference is loaded in the ToString override, and if not load it.
public override string ToString()
{
if (this.Course == null)
{
if (!this.CourseReference.IsLoaded)
this.CourseReference.Load();
return this.Course.Name + " - " + string.Format("{0:yyyy-MM-dd}", this.StartDate.Date);
}
else
return this.Course.Name + " - " + string.Format("{0:yyyy-MM-dd}", this.StartDate.Date);
}