我正在使用Entity Framework 6并定义一个名为ObjectiveDetail的表。
我已经看到了两种创建ObjectiveDetail类的方法。一个创造 一个List和另一个HashSet。
有什么区别?
public partial class ObjectiveDetail {
public ObjectiveDetail() {
this.SubTopics = new List<SubTopic>();
}
public int ObjectiveDetailId { get; set; }
public int Number { get; set; }
public string Text { get; set; }
public virtual ICollection<SubTopic> SubTopics { get; set; }
}
public class ObjectiveDetail
{
public ObjectiveDetail() {
this.SubTopics = new HashSet<SubTopic>();
}
public int ObjectiveDetailId { get; set; }
public int Number { get; set; }
public string Text { get; set; }
public virtual ICollection<SubTopic> SubTopics { get; set; }
}
答案 0 :(得分:4)
我认为这取决于集合中的项目是否应该是唯一的,就数据库而言,它可能是应用于列的唯一约束。
Hashset只包含唯一的项目,而List可以包含重复项。
答案 1 :(得分:0)
为了扩展HashSet
在这种情况下强制唯一性的重要性,导航属性所代表的关系必须考虑数据建模。
虽然您可能entity A
多次与entity B
相关,但即使两个关系都是1 - >很多,A侧的每个关系只与B侧的实体的给定实例相关一次。因此,最好用HashSet表示。
对于上面的示例,A
将有两个HashSet
导航属性,B1
和B2
,而不是一个List来处理这两种关系。