小编典典

为什么使用ICollection而不是IEnumerable或List 在多对多/一对多关系上?

c#

我在教程中看到了很多,导航属性为ICollection<T>

这是对实体框架的强制性要求吗?我可以使用IEnumerable吗?

使用ICollection代替IEnumerable或什至的主要目的是List<T>什么?


阅读 332

收藏
2020-05-19

共1个答案

小编典典

通常,您选择的内容取决于您需要使用的方法。通常,-
IEnumerable<>(MSDN:http : //msdn.microsoft.com/zh-
cn/library/system.collections.ienumerable.aspx)用于仅需要遍历的对象列表ICollection<>(MSDN:http://
msdn.microsoft.com/zh-cn/library/92t2ye13.aspx),以获取需要迭代和修改List<>的对象列表,以及需要迭代,修改,排序等的对象列表(请参见此处)有关完整列表,请访问:http : //msdn.microsoft.com/en-
us/library/6sh2ey19.aspx)。

从更具体的角度来看,延迟加载可以选择类型。默认情况下,实体框架中的导航属性带有更改跟踪,它们是代理。为了将动态代理创建为导航属性,虚拟类型 必须
实现ICollection

表示关系的“许多”端的导航属性必须返回实现ICollection的类型,其中T是关系的另一端的对象的类型。-
创建POCO代理MSDN的要求

有关定义和管理关系的更多信息,MSDN

2020-05-19