Sql server 如何在ASP.NET Core MVC中将所有记录从分页WebAPI拉入SQL Server数据库?

Sql server 如何在ASP.NET Core MVC中将所有记录从分页WebAPI拉入SQL Server数据库?,sql-server,asp.net-web-api,pagination,asp.net-core-mvc,Sql Server,Asp.net Web Api,Pagination,Asp.net Core Mvc,我的要求是从外部api中提取数据,第一个调用只返回100条记录,但标题信息说明远程数据库中的总页面和总记录。我需要一次提取所有这些记录并插入到我的数据库中,对api的下一次调用应该只提取远程数据库中的新记录 public void GetReservation(int? pageNumber, int? pageSize) { using (HttpClient client = new HttpClient()) { cl

我的要求是从外部api中提取数据,第一个调用只返回100条记录,但标题信息说明远程数据库中的总页面和总记录。我需要一次提取所有这些记录并插入到我的数据库中,对api的下一次调用应该只提取远程数据库中的新记录

    public void GetReservation(int? pageNumber, int? pageSize)
    {
        using (HttpClient client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://www.sitename.com/url");
            MediaTypeWithQualityHeaderValue contentType = new 
            MediaTypeWithQualityHeaderValue("application/json");
            client.DefaultRequestHeaders.Accept.Add(contentType);
            HttpResponseMessage response = client.GetAsync($"/api/serviceurl?pageNumber= 
            {pageNumber}&pageSize={pageSize}").Result;
            string stringData = response.Content.ReadAsStringAsync().Result;
            List<Reservations> data = JsonConvert.DeserializeObject<List<Reservations>>(stringData);

            var headerInfo = response.Headers.GetValues("X-Pagination").First();
            XPaginationObject obj= JsonConvert.DeserializeObject<XPagination>(headerInfo);

           // Insert into database code only enters first 100 page

        }
    }
我正在使用ASP.NET Core 3.0和SQL Server数据库

    public void GetReservation(int? pageNumber, int? pageSize)
    {
        using (HttpClient client = new HttpClient())
        {
            client.BaseAddress = new Uri("https://www.sitename.com/url");
            MediaTypeWithQualityHeaderValue contentType = new 
            MediaTypeWithQualityHeaderValue("application/json");
            client.DefaultRequestHeaders.Accept.Add(contentType);
            HttpResponseMessage response = client.GetAsync($"/api/serviceurl?pageNumber= 
            {pageNumber}&pageSize={pageSize}").Result;
            string stringData = response.Content.ReadAsStringAsync().Result;
            List<Reservations> data = JsonConvert.DeserializeObject<List<Reservations>>(stringData);

            var headerInfo = response.Headers.GetValues("X-Pagination").First();
            XPaginationObject obj= JsonConvert.DeserializeObject<XPagination>(headerInfo);

           // Insert into database code only enters first 100 page

        }
    }
public-void-GetReservation(int-pageNumber,int-pageSize)
{
使用(HttpClient=new HttpClient())
{
client.BaseAddress=新Uri(“https://www.sitename.com/url");
MediaTypeWithQualityHeaderValue内容类型=新建
MediaTypeWithQualityHeaderValue(“应用程序/json”);
client.DefaultRequestHeaders.Accept.Add(contentType);
HttpResponseMessage response=client.GetAsync($”/api/serviceurl?页码=
{pageNumber}&pageSize={pageSize}”)。结果;
string stringData=response.Content.ReadAsStringAsync().Result;
列表数据=JsonConvert.DeserializeObject(stringData);
var headerInfo=response.Headers.GetValues(“X-Pagination”).First();
XPaginationObject obj=JsonConvert.DeserializeObject(headerInfo);
//插入数据库代码只进入前100页
}
}

headerinfo
包含totalpages、totalrecords、currentpage、hasNext、hasprevious

在我看来,您就快到了:只需在循环中运行此方法,直到获得所有记录。。但是首先你需要得到总页数

我要做的是:

1:调用页码为1、大小为0的api,以便接收标头。 2:从标题中获取信息,并在页面上循环,直到完成。 3.您必须编写自己的逻辑,以便只获取新的预订,例如,存储上次收到的页面和记录编号,以便下次可以跳过这些

这回答了你的问题吗


注:很可能您的数据提供商一次只允许获取100行数据。如果是这种情况,您必须循环100多个记录页面,直到收到所有页面。

这是我目前的方法,看起来有点紧张。我正在寻找一种更有效的方法来解决问题。但是你的方法是正确的,这就是我目前设置的。