我使用.NET核心和SQLKata访问Server数据库。我有一个使用SQLKata.Execution.PaginationResult从数据库中获取所有记录的方法。
这是在储藏室:
public class MyTableRepository : IMyTableRepository
{
private QueryFactory _db;
public MyTableRepository(IConfiguration configuration)
{
var conn = new
SqlConnection(configuration.GetConnectionString("MyTable"));
_db = new QueryFactory(conn, new SqlKata.Compilers.SqlServerCompiler());
}
public PaginationResult<MyModel> GetAll(int page = 0, int perPage = 25)
{
dbResult = _db.Query("MyTable").Paginate<MyModel>(page, perPage);
return dbResult;
}上面的内容来自我的主计长,如下所示:
private readonly IMyTableRepository _MyTableRepository;
public MyTableController(IMyTableRepository MyTableRepository)
{
_MyTableRepository = MyTableRepository;
}
[HttpGet]
[Route("GetMyTable")]
public List<MyModel> GetMyTable()
{
PaginationResult<MyModel> dbResult = MyTableRepository.GetAll(1,
25);
List<MyModel> AccumResult = dbResult.List.ToList();
while(dbResult.HasNext)
{
dbResult = dbResult.Next();
AccumResult.AddRange(dbResult.List.ToList());
}
return AccumResult;
}如何从dbResult获得下一组结果?
我在下面尝试,在执行GetMyTable之后,我执行GetNextMyTable,但是在PaginationResult GetNext()中,dbResult总是空的。
在主计长:
[HttpGet]
[Route("GetNextMyTable")]
public List<MyTable> GetNextMyTable()
{
var result = _MyTableRepository.GetNext().List;
return result.ToList();
}在保管所:
public PaginationResult<MyTable> GetNext()
{
while(dbResult.HasNext) //--->> dbResult is null
{
dbResult = dbResult.Next();
return dbResult;
}
return null;
} 如果我在控制器内执行下一个方法,我也会得到一个错误
private readonly IMyTableRepository _MyTableRepository;
private PaginationResult<SP_SMA_Reporting_Accts> dbResult;
[HttpGet]
[Route("GetMyTable")]
public List<MyModel> GetMyTable()
{
var dbResult = _MyTableRepository.GetAll(1, 25).List;
return dbResult.ToList();
}
[HttpGet]
[Route("GetNextMyTable")]
public List<MyTable> GetNextMyTable()
{
var result = dbResult.Next().List;//->Error since dbResult is null
return result.ToList();
}发布于 2022-01-13 16:55:57
简而言之,重构存储库方法GetAll以调用db.Query
用途:
_db.Query("MyTable").Paginate<MyModel>(page, perPage);而不是
_db.Paginate<MyModel>(new Query("MyTable"), page, perPage);解释:
在调用Next()方法时,PaginationResult将分页过程委托给保持查询,在您的情况下,由于您传递的是new Query(),因此没有连接信息,因此您将获得null。
https://stackoverflow.com/questions/70689554
复制相似问题