我在网上看到的大部分示例都将导航属性显示为
然而,当您访问这种属性时,它会在内存中加载整个集合,如果您在其后有一个子查询(即
如何避免这种情况?我希望
ICollection
或直接使用List
实现。它们通常是virtual
的,以启用延迟加载。然而,当您访问这种属性时,它会在内存中加载整个集合,如果您在其后有一个子查询(即
object.MyListProperty.Where(...)
),我注意到每个MyListProperty
中的项目都会发出一个SQL查询。如何避免这种情况?我希望
list
属性后面的where
子句能够在SQL服务器上执行,如果可能的话。我可以使用IQueryable
导航属性吗?是否有任何最佳实践适用于这种情况?
IQueryable<T>
不是一个有效的导航属性类型。即使是IEnumerable<T>
也不行。ICollection<T>
是最低要求,当然还可以从它派生。 - Ivan Stoev