【发布时间】:2011-08-16 20:00:46
【问题描述】:
我正忙于一个新项目,并且正在处理我的存储库层。这将是我使用存储库模式的第二个项目。我一直在阅读 Scott Millett 的书Professional ASP.NET Design Patterns 在参考书中的案例研究时,Scott 在他的存储库接口中使用了查询对象模式。在我之前的项目中,我为此使用了 LINQ,它运行良好。
我的问题如下:使用查询对象模式实现与在存储库中使用 LINQ 的优缺点是什么?
这里有 2 个场景来说明这 2 种不同的方法:
1.查询对象模式方法
public interface IReadOnlyRepository<T, TId> where T : IAggregateRoot
{
T FindBy(TId id);
IEnumerable<T> FindAll();
IEnumerable<T> FindBy(Query query);
}
2。 LINQ 方法
public interface IReadOnlyRepository<T, TId> where T : IAggregateRoot
{
T FindBy(TId id);
IQueryable<T> FindAll();
IQueryable<T> FindBy(Expression<Func<T, bool>> query);
}
任何贡献都会有所帮助。
【问题讨论】:
-
恕我直言,表达式树是查询对象模式的一种特殊形式。
标签: linq design-patterns