在 C# 中以通用存储库模式调用数据库视图

Posted

技术标签:

【中文标题】在 C# 中以通用存储库模式调用数据库视图【英文标题】:Call Database View in Generic repository pattern in C# 【发布时间】:2021-03-20 06:55:42 【问题描述】:

我在 Web API C# (.Net Framework 4.7.2) 中使用通用存储库模式,数据库为 postgresql。我想使用通用存储库调用数据库视图和存储过程。注意:我不使用 EDMX 文件。

PostgreSQL 视图:CREATE VIEW dashboardreport AS SELECT s.fullname, t.reportid, t.statusid, t.reportingto, t.ispendingapprovel FROM staff s JOIN report t on s.staffid=t.staffid;

通用存储库:

public class Repository<T> : IRepository<T> where T : class

    public repoDbContext dbContext = null;
    private readonly DbSet<T> dbSet = null;

    public Repository()
    
        this.dbContext = new repoDbContext();
        this.dbContext.Configuration.ProxyCreationEnabled = false;
        this.dbContext.Configuration.LazyLoadingEnabled = true;
        dbSet = dbContext.Set<T>();
    

    public async Task<IEnumerable<T>> GetAll()
    
        try
        
            return await dbSet.ToListAsync();
        
        catch
        
            throw;
        
    

我必须调用并显示视图/存储过程的结果。 提前致谢。

【问题讨论】:

【参考方案1】:

最后,我得到了解决方法。请找到代码sn-p。

public async Task<IEnumerable<T>> GetView(string viewName)

return await dbContext.Database.SqlQuery<T>("SELECT * FROM public." + viewName).ToListAsync();

【讨论】:

以上是关于在 C# 中以通用存储库模式调用数据库视图的主要内容,如果未能解决你的问题,请参考以下文章

核心数据编码模式

只读数据库视图如何适应存储库模式?

具有实体框架 4.1 和父/子关系的存储库模式

简述什么是视图

数据库学习

C# 事件去抖动