存储库模式中的IQueryable与IEnumerable,延迟加载

Mil*_*ara 16 .net c# lazy-loading iqueryable

我已经阅读了一些文章,声明IEnumerable用于模仿存储过程或限制您的数据库.外部提供商丢失了延迟加载能力.

IQueryable可以为开发人员提供更大的灵活性.懒惰装载就在那里.

在性能方面,两者都消耗了大量的性能..哪一个更优选?

Rob*_*vey 25

从存储库模式的角度来看,您可以这样想:

  1. IEnumerable如果要一次性将整个列表传递给客户端,请使用急切加载.他们仍然可以添加linq子句,但客户端不会从延迟执行中受益.

  2. IQueryable如果要将延迟查询功能扩展到客户端,请允许客户端添加自己的linq子句,从而使用延迟加载.这将延迟执行整个查询,直到需要输出为止.

另请参见
延迟执行和急切评估


Taj*_*100 6

IEnumerable 与 IQueryable

IQueryable 最适合服务器端数据,而 IEnumerable 最适合客户端使用的数组/列表。