我正在尝试重构\重新设计一些代码,但我陷入了一个我不知道如何继续的地步。我通常会使用实体框架并为适当的表创建一个存储库和工作单元,但我没有特别使用任何表,只是存储过程的结果,这些结果分布在多个表中或由动态SQL完成。
此项目不会使用任何创建,更新或删除命令。是否建议为每个存储过程编写返回POCO并创建某种IReadOnlyRepository
?或者我会一起避免使用DAL,只是从DataReader
读取结果并将其合并到我的业务逻辑中?
TL; DR
在进行只读操作时是否有使用O / RM的意义?如果是这样,它的设计模式是什么,与标准的Repository \ Unit of Work模式不同?
答案 0 :(得分:2)
您仍然可以将实体框架与存储过程一起使用。
生成.EDMX文件并映射您需要访问的存储过程
例如:
public override List<AdminUser> GetAll() {
using (var context = new Scope_v5Entities())
return context.getAllAdmin().ToList();
}
在此示例中,getAllAdmin是存储过程。
由于您已经制定了相应的程序,因此在我看来这是最有效的方法。
您可以在代码中创建标准数据访问层,就像在EF中直接对表编写查询一样。