【发布时间】:2017-01-06 16:36:53
【问题描述】:
我在互联网上看到的大多数示例都将导航属性显示为ICollection 或直接List 实现。它们通常是virtual,以启用延迟加载。
但是,当您访问此类属性时,它会将整个集合加载到内存中,如果您在它之后有一个子查询(即object.MyListProperty.Where(...)),我注意到将为@987654326 中的每个项目发出一个SQL 查询@。
如何避免这种情况?如果可能,我希望 list 属性之后的 where 子句在 SQL 服务器上执行。我可以使用IQueryable 导航属性吗?这种情况有什么最佳实践吗?
【问题讨论】:
-
我明白你的意思,但不,
IQueryable<T>不是有效的导航属性类型。甚至IEnumerable<T>也不是。ICollection<T>是最小值,当然是从它派生的。
标签: c# entity-framework ef-code-first iqueryable