[英]Strange behavior with IEnumerable/IQueryable extension (no lazy loading?)
[英]IQueryable vs. IEnumerable in the repository pattern , lazy loading
我已经阅读了一些文章,声明IEnumerable用于模仿存储过程或限制您的数据库。 外部提供商丢失了延迟加载能力。
IQueryable可以为开发人员提供更大的灵活性。 懒惰装载就在那里。
在性能方面,两者都消耗了大量的性能..哪一个更优选?
从存储库模式的角度来看,您可以这样想:
当您想要一次性将整个列表传递给客户端时,请使用eager loading IEnumerable
。 他们仍然可以添加linq子句,但客户端不会从延迟执行中受益。
当您希望通过允许客户端添加自己的linq子句来向客户端扩展延迟查询功能时,请使用延迟加载IQueryable
。 这将延迟执行整个查询,直到需要输出为止。
也可以看看
延期执行和急切评估
“IEnumerable”和“IQueryable”之间的主要区别在于执行过滤器逻辑的位置。 一个在客户端执行(在内存中),另一个在数据库上执行。
因此,当从内存集合(如List,Array等)查询数据时,您应该使用IEnumerable。
另一方面,当从外部存储器(如远程数据库,服务)集合中查询数据时,您应该使用IQueryable。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.