我正在使用Visual Studio自动构建代码的第一个模型NorthWind数据库。我有一些疑问。实体框架:为什么实体类的集合类型需要在默认构造函数中实例化?
我发现如果实体类有一个集合,那么该集合总是在默认构造函数中实例化。为什么我们需要这样做?
ICollection<T>
在默认构造函数中实例化为HashSet<T>
。为什么使用HashSet<T>
?我可以使用List<T>
或其他东西吗?为什么在一个侧(一对多关系)的导航属性是
ICollection<T>
和virtual
?
要以我上面提到的方式实现实体类,我认为必须有一些好处可以带来。你能告诉我为什么吗?
public partial class Orders
{
public Orders()
{
Order_Details = new HashSet<Order_Details>();
}
public virtual ICollection<Order_Details> Order_Details { get; set; }
}
HashSet是一个限制只包含唯一条目的集合,内部结构针对搜索进行了优化,而不是列表 - 它速度相当快。 –
更快找到给定的对象实例,而不是通过Id属性查找某个内容。 –