我非常喜欢使用Repository pattern
来返回IQueryable<T>
个对象。然后我让我的服务层决定做什么(例如,按XXX过滤,按YYY排序,投影到ABCD等)。
但是我有一些核心数据库的东西,所以我把它全部包裹成Stored Procedure
。工作良好。我知道EF可以执行存储过程..但我不确定它是如何适合存储库模式数据层的。
有没有人有任何示例/建议?我是否让存储库方法执行存储过程,然后我返回结果(例如。ICollection<Foo> as AsQueryable
..所以服务层然后只查询该结果?
答案 0 :(得分:2)
我建议继续这样做。在EF模型中设置存储过程,返回它需要的任何实体,然后在存储库中创建一个get来解决存储过程正在使用的内容。数据返回方式的差异发生在DAL内部(在本例中为EF模型),您的存储库仍在访问上下文以查找和返回数据。
我现在正在做类似的事情,这是我能想到的最好的解决方案。它允许我继续在EF模型中进行数据访问,并使我的存储库与模型收集数据的方式分开。存储库仍然对模型如何获取数据毫无头绪,应用程序的其余部分将不会看到有关存储库函数的任何不同。