可以使用存储库模式+存储过程吗?他们应该/可以返回IQueryable吗?

时间:2010-08-02 07:00:32

标签: .net entity-framework stored-procedures entity-framework-4 repository-pattern

我非常喜欢使用Repository pattern来返回IQueryable<T>个对象。然后我让我的服务层决定做什么(例如,按XXX过滤,按YYY排序,投影到ABCD等)。

但是我有一些核心数据库的东西,所以我把它全部包裹成Stored Procedure。工作良好。我知道EF可以执行存储过程..但我不确定它是如何适合存储库模式数据层的。

有没有人有任何示例/建议?我是否让存储库方法执行存储过程,然后我返回结果(例如。ICollection<Foo> as AsQueryable ..所以服务层然后只查询该结果?

1 个答案:

答案 0 :(得分:2)

我建议继续这样做。在EF模型中设置存储过程,返回它需要的任何实体,然后在存储库中创建一个get来解决存储过程正在使用的内容。数据返回方式的差异发生在DAL内部(在本例中为EF模型),您的存储库仍在访问上下文以查找和返回数据。

我现在正在做类似的事情,这是我能想到的最好的解决方案。它允许我继续在EF模型中进行数据访问,并使我的存储库与模型收集数据的方式分开。存储库仍然对模型如何获取数据毫无头绪,应用程序的其余部分将不会看到有关存储库函数的任何不同。