38
|
Armstrongest · 技术社区 · 15 年前 |
![]() |
1
52
这取决于你想要什么样的行为。
虽然后者给了调用方很大的灵活性(假设您的存储库完全支持它),但它是最难测试的,而且可以说是最不确定的。 |
![]() |
2
8
|
![]() |
3
5
霍乌格差异。我经常看到这个。
至于使用哪种存储库模式,我相信这是迫切需要的。我通常看到ILists被通过,但是其他人需要为你解决这个问题。编辑-您通常会看到IEnumerable而不是IQueryable,因为您不希望层超过存储库A)确定何时发生数据库命中,或B)向存储库外部的连接添加任何逻辑
http://channel9.msdn.com/posts/matthijs/LINQ-Tips-Tricks-and-Optimizations-by-Scott-Allen/ |
![]() |
4
3
您可以使用IQueryable并接受有人可以创建一个场景 SELECT N+1 可能发生。这是一个缺点,另外一个事实是,您可能会在存储库上方的层中生成特定于存储库实现的代码。这样做的好处是,您允许在respository之外表达诸如分页和排序之类的委托常见操作,从而减轻了它的此类顾虑。如果您需要将数据与其他数据库表连接起来,那么它也更灵活,因为查询仍然是一个表达式,因此可以在将其解析为查询并命中数据库之前添加到。
|