在 C# 中的通用存储库模式中调用数据库视图
Call Database View in Generic repository pattern in C#
我在 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;
}
}}
我必须调用并显示视图/存储过程的结果。
提前致谢。
最后,我得到了解决方法。请找到代码片段。
public async Task<IEnumerable<T>> GetView(string viewName)
{
return await dbContext.Database.SqlQuery<T>("SELECT * FROM public." + viewName).ToListAsync();
}
我在 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;
}
}}
我必须调用并显示视图/存储过程的结果。 提前致谢。
最后,我得到了解决方法。请找到代码片段。
public async Task<IEnumerable<T>> GetView(string viewName)
{
return await dbContext.Database.SqlQuery<T>("SELECT * FROM public." + viewName).ToListAsync();
}