C# 用于存储过程的只读操作的设计模式?

C# 用于存储过程的只读操作的设计模式?,c#,sql-server,design-patterns,.net-4.5,C#,Sql Server,Design Patterns,.net 4.5,我试图重构/重新设计一些代码,但我被困在一个我不知道如何继续的点上。我通常会使用实体框架并为适当的表创建一个存储库和工作单元,但我不会特别使用任何表,只使用分布在多个表中或由动态SQL完成的存储过程的结果 此项目不使用创建、更新或删除命令。是否建议编写每个存储过程的返回POCO,并创建某种类型的IReadOnlyRepository?或者,我会一起避免DAL,只是从DataReader读取结果,并将其合并到我的业务逻辑中吗 TL;博士 在执行只读操作时使用O/RM有什么意义吗?如果是,那么设计模

我试图重构/重新设计一些代码,但我被困在一个我不知道如何继续的点上。我通常会使用实体框架并为适当的表创建一个存储库和工作单元,但我不会特别使用任何表,只使用分布在多个表中或由动态SQL完成的存储过程的结果

此项目不使用创建、更新或删除命令。是否建议编写每个存储过程的返回POCO,并创建某种类型的
IReadOnlyRepository
?或者,我会一起避免DAL,只是从
DataReader
读取结果,并将其合并到我的业务逻辑中吗

TL;博士


在执行只读操作时使用O/RM有什么意义吗?如果是,那么设计模式与标准存储库\工作单元模式有什么不同?

您仍然可以将实体框架与存储过程一起使用

生成.EDMX文件并映射需要访问的存储过程

例如:

public override List<AdminUser> GetAll() {
        using (var context = new Scope_v5Entities()) 
            return context.getAllAdmin().ToList();
    }
public覆盖列表GetAll(){
使用(var context=new Scope_v5Entities())
返回context.getAllAdmin().ToList();
}
在本例中,getAllAdmin是一个存储过程

因为你已经有了程序,在我看来,这是最有效的方法


您可以在代码中创建标准数据访问层,就像直接在EF中对表编写查询一样

希望我能理解你的要求。@tmckown,对不起,我编辑了我的帖子,试图澄清我所说的。你仍然可以在存储过程中使用EF。如果希望它是只读的,可以在上下文中重写Save方法。