为什么在多对多关系中使用ICollection而不使用IEnumerable或List <T>?

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

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

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


凤凰求蛊
浏览 593回答 3
3回答

智慧大石

通常,您选择的内容取决于您需要使用的方法。通常,- 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>之所以使用,是因为该IEnumerable<T>界面无法提供添加项,删除项或修改集合的方式。

千巷猫影

回答关于List<T>以下问题:List<T>是一堂课 指定接口可以实现更高的灵活性。一个更好的问题是“为什么不IList<T>呢?”要回答这个问题,请考虑IList<T>增加了什么ICollection<T>:整数索引,这意味着项目具有某些任意顺序,可以通过引用该顺序来进行检索。在大多数情况下,这可能没有意义,因为在不同情况下可能需要对项目进行不同的排序。
打开App,查看更多内容
随时随地看视频慕课网APP