我在实体框架的学习曲线中。我按照msdn中的实体框架中的教程进行操作。在样本中,实体定义如下;
public class Department
{
public Department()
{
this.Courses = new HashSet<Course>();
}
// Primary key
public int DepartmentID { get; set; }
public string Name { get; set; }
public decimal Budget { get; set; }
public System.DateTime StartDate { get; set; }
public int? Administrator { get; set; }
// Navigation property
public virtual ICollection<Course> Courses { get; private set; }
}
public class Course
{
public Course()
{
this.Instructors = new HashSet<Instructor>();
}
// Primary key
public int CourseID { get; set; }
public string Title { get; set; }
public int Credits { get; set; }
// Foreign key
public int DepartmentID { get; set; }
// Navigation properties
public virtual Department Department { get; set; }
public virtual ICollection<Instructor> Instructors { get; private set; }
}
public class Instructor
{
public Instructor()
{
this.Courses = new List<Course>();
}
// Primary key
public int InstructorID { get; set; }
public string LastName { get; set; }
public string FirstName { get; set; }
public System.DateTime HireDate { get; set; }
// Navigation properties
public virtual ICollection<Course> Courses { get; private set; }
}
我只展示了一些专注于我的问题的课程。完整样本为here。我怀疑是 为什么在构造函数中使用hashset来创建ICollection属性?
在集合操作中,hashset性能很好如果hashset在这些类型的区域中是合适的,那么
为什么他们在&#39;教练&#39;的构造函数中使用List初始化?实体吗
可以简单地显示2个选项。但如果没有,请建议并告诉我使用hashset的任何其他一般情况。在这里,他们返回ICollection,仅用于初始化他们使用hashset。
答案 0 :(得分:0)
我相信他们这样做是因为HashSet强制执行唯一性。所以部门的课程必须是独一无二的。但对于教练来说可能并非如此