当前位置: 首页 > 知识库问答 >
问题:

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

戚俊健
2023-03-14

我在教程中经常看到这一点,导航属性为icollection

使用icollection而不是iEnumerable甚至list 的主要目的是什么?

共有1个答案

谷梁宏恺
2023-03-14

通常,您的选择取决于您需要访问哪些方法。一般情况下-IEnumerable<>(msdn:http://msdn.microsoft.com/en-us/library/system.collections.IEnumerable.aspx)表示只需要循环访问的对象列表,ICollection<>(msdn:http://msdn.microsoft.com/en-us/library/92t2ye13.aspx)表示需要循环访问和修改的对象列表,list<>表示需要循环访问、修改、排序等的对象列表(完整列表请参阅此处

从一个更具体的观点来看,惰性加载是用来选择类型的。默认情况下,Entity Framework中的导航属性随更改跟踪一起提供,并且是代理。为了将动态代理创建为导航属性,虚拟类型必须实现icollection

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

有关定义和管理关系的详细信息MSDN

 类似资料:
  • 我的问题可能看起来很傻。我是JPA的新手,试图理解它的基本概念。我发现有一种@multi-to-one实体关系可以在那里使用。我的问题是,为什么有人想在拥有“一对多”关系的同时使用它?我的意思是,拥有后一个就足够了解关系并发送查询了,对吗?如果没有,请解释。也许我对这两种关系的看法是完全错误的。请提供一个场景作为示例,以便我更好地理解。谢谢

  • 问题内容: 如果我们采用以下代码: 相对于,更喜欢多态是什么意思,顺便说一句,为什么更好呢? 编辑: 我了解什么是多态性;我所缺少的是人们将如何使用它而不是。 问题答案: if … else …(或switch或Visitor)之间以及多态之间的主要区别是模块化。有所谓的开闭原理,这基本上意味着,当您向现有程序中添加新功能时,对现有代码所做的更改越少越好(因为每次更改都需要一些工作,并且可能会引入

  • 我刚刚注意到,C#中的多维数组没有实现,而它实现了。对于单维数组,同时实现和。 为什么会有这种差别?如果多维数组是,那么它是否也应该实现泛型版本?我注意到这一点,是因为我试图在多维数组上使用扩展方法,除非您使用或类似的方法,否则会失败;所以我可以肯定地看到使多维数组实现的一个参数。 为了在代码中澄清我的问题,我希望下面的代码打印四次,而它实际打印的是、、、、和:

  • 我查看了为接口生成的元数据,注意到它实现了 这不是多余的吗?查看的元数据,可以发现它已经实现了

  • 用户表结构:用户 id、名称、用户名、密码、创建时间、更新时间 文章表结构:文章 id、标题、内容、创建时间、更新时间 关系表:文章\用户 id、文章id、用户id处于活动状态、创建时间、更新时间 标签 id、名称、用户id、创建时间、更新时间 透视表项目用户与标记的关系。表:文章\用户\标签 标签号,物品号,用户号 我想连接这些表,以便可以像这样或类似的格式访问 并且应该能够创建/更新smth,

  • 问题内容: 已关闭 。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗? 更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 “关联表”的正确或最受欢迎的名称是什么? 我听说过查找,关联,解析,映射和联结表。 问题答案: 对照表。CustomerProductXRef。