2015-02-24 4 views
1

Я пытаюсь реализовать многие ко многим в EF Code-first. Я нашел этот код:HashSet в EF много для многих

public class Student 
    { 
     public Student() { } 

     public int StudentId { get; set; } 
     [Required] 
     public string StudentName { get; set; } 

     public virtual ICollection<Course> Courses { get; set; } 
    } 

    public class Course 
    { 
     public Course() 
     { 
      this.Students = new HashSet<Student>(); 
     } 

     public int CourseId { get; set; } 
     public string CourseName { get; set; } 

     public virtual ICollection<Student> Students { get; set; } 
    } 

Я понимаю все, кроме:

public Course() 
    { 
     this.Students = new HashSet<Student>(); 
    } 

Можете ли вы сказать мне, почему эта часть нужна? Благодарю.

ответ

1

Это необходимо, потому что вы должны создать экземпляр конкретной реализации ICollection, которую вы хотели бы использовать. HashSet реализует хеш-таблицу, которая очень эффективна для множества операций, например, для поиска большого набора для одного элемента. Но у вас могут быть причины для выбора другой реализации, например List. В равной мере хорошо создать экземпляр коллекции как this.Students = new List<Student>(); - Entity Framework не заботится, но по умолчанию это HashSet.

Смежные вопросы