I have read this great Q&A and I tried to make something similar. My Model classes are:
public class Person
{
    public int PersonId { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public ICollection<Course> CoursesAttending { get; set; }
    public Person()
    {
        this.CoursesAttending = new List<Course>();
    }
}
public class Course
{
    public int CourseId { get; set; }
    public string Title { get; set; }
    public ICollection<Person> Students { get; set; }
}
public class PersonCourse
{
    [Key, Column(Order = 0)]
    public int PersonID { get; set; }
    [Key, Column(Order = 1)]
    public int CourseID { get; set; }
    public virtual Person Student { get; set; }
    public virtual Course StudentCourse { get; set; }
    public int Mark { get; set; }
    public string Comment { get; set; }
}
public class SchoolContext : DbContext
{
    public DbSet<Course> Courses { get; set; }
    public DbSet<Person> People { get; set; }
    public DbSet<PersonCourse> PersonCourseLinks { get; set; }
    public SchoolContext()
        : base("ManyToManyTest")
    {
    }
}
Now, I try to add a new person and add a new course to his courses list:
[HttpPost]
    public ActionResult Create(Person person)
    {
        if (ModelState.IsValid)
        {
            Course studentCourse;
            try
            {
                studentCourse = db.Courses.ToList<Course>().First();
            }
            catch
            {
                studentCourse = new Course() { Title = "HTML" };
            }
            person.CoursesAttending.Add(studentCourse);
            db.People.Add(person);
            db.SaveChanges();
            return RedirectToAction("Index");  
        }
        return View(person);
    }
Everything goes well, but when I open my created database, I see there are 2 link tables for the Person and Course classes - PersonCourses(with fields: PersonID, CourseID, Mark, Comment) and PersonCourse1(with fields: PersonID, CourseID), and only PersonCourse1 has rows (actually one row). Why does it happen? Did I do something not correct? I expect to see only one link table - the PersonCourses table...
 
     
     
     
    