为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
凤凰求蛊 2019-10-14 10:13:12
我在教程中看到了很多,导航属性为ICollection<T>。这是对实体框架的强制性要求吗?我可以使用IEnumerable吗?使用ICollection代替IEnumerable或什至的主要目的是List<T>什么?
查看完整描述

3 回答

?
智慧大石

TA贡献1946条经验 获得超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。


查看完整回答
反对 回复 2019-10-14
?
慕后森

TA贡献1802条经验 获得超5个赞

ICollection<T>之所以使用,是因为该IEnumerable<T>界面无法提供添加项,删除项或修改集合的方式。


查看完整回答
反对 回复 2019-10-14
?
千巷猫影

TA贡献1829条经验 获得超7个赞

回答关于List<T>以下问题:


List<T>是一堂课 指定接口可以实现更高的灵活性。一个更好的问题是“为什么不IList<T>呢?”


要回答这个问题,请考虑IList<T>增加了什么ICollection<T>:整数索引,这意味着项目具有某些任意顺序,可以通过引用该顺序来进行检索。在大多数情况下,这可能没有意义,因为在不同情况下可能需要对项目进行不同的排序。


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 592 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信