存储库返回的结果应该是哪种集合类型? (。净)

时间:2010-05-08 13:14:51

标签: .net persistence repository-pattern

在.net应用程序中使用基于存储库的持久性时,通常应该使用哪种集合类型?

IList,IEnumerable?

例如,FindAll()方法。

3 个答案:

答案 0 :(得分:2)

取决于。

  • IEnumerable<T>最小化调用代码和存储库实现之间的耦合。但是所有进一步的处理(例如分类)都必须在过程中完成。
  • IQueryable<T>允许添加进一步的操作,这可能(取决于存储库实现)在底层数据存储上执行。

由于您可以在其中任何一个之间轻松转换(有一个AsQueryable扩展方法,允许将IEnumerable<T>转换为IQueryable<T>进行输入,但当然处理仍然是在记忆中完成。)

就个人而言,我喜欢IQueryable<T>给出的潜在好处,即使非基于LINQ的存储库现在可能无法从中受益。另一方面YAGTNI。

答案 1 :(得分:1)

对于只读集合,您可以使用ReadOnlyCollection<T>。通过使用LINQ,可以在其他类型上获得FindAll提供的List功能。

答案 2 :(得分:1)

我总是使用IEnumerable,因为它是最小的返回类型,所以你不给客户端他不需要的东西