这个问题之前可能已经被正确提出,我很乐意接受一个指向我正确答案的答案。问题是我不知道如何正确地问问题才能得到搜索结果。
我正在尝试从第三方API(ADP)中提取数据,并使用asp.net核心将数据存储在数据库中。
我希望将API返回的用户存储在我的数据库中,在该数据库中,我植入了ADP辅助表,其中包含了api的大部分数据。
然后,我想在数据库 FROM API中更新或添加任何丢失或更改的记录。
我正在考虑使用对api的ajax调用来检索记录,然后将数据存储到另一个表中,并使用sql查找在两个表之间更改的记录并进行任何必要的更改(此操作(可以通过按钮手动激活),也可以使用某种预定的后台任务通过我的C#代码中的方法(而不是Ajax)执行此操作。
我的问题是:
我应该看的任何建议或技术将不胜感激。谢谢你的时间。
我的应用是使用EF Core在asp.net core 2.2中编写的
*编辑*
对于任何寻找-https://docs.microsoft.com/en-us/dotnet/csharp/tutorials/console-webapiclient
的人这与John Wu的答案一起帮助我实现了我所寻找的目标。
答案 0 :(得分:1)
如果这是我的项目,这就是我按顺序分解任务的方式。
首先,启动一个空的控制台应用程序。
接下来,编写一个从API获取用户列表的方法。您根本没有告诉我们有关API的任何信息,因此这是一个使用HTTP客户端的虚拟示例。
public async Task<List<User>> GetUsers()
{
var client = new HttpClient();
var response = await client.GetAsync("https://SomeApi.com/Users");
var users = await ParseResponse(response);
return users.ToList();
}
测试以上内容(例如,编写一些小代码来运行它并转储结果,等等)以确保其独立运行。您想在继续之前确保它牢固。
接下来,创建一个或多个临时表,这些临时表与从API返回的数据对象的模式匹配。现在,您只需要完全按照检索方式存储它即可。
接下来,编写一些代码以将记录插入到表中。再次,单独进行测试,并查看表中的数据以确保所有数据均正常工作。可能看起来像这样:
public async Task InsertUser(User user)
{
using (var conn = new SqlConnection(Configuration.ConnectionString))
{
var cmd = new SqlCommand();
//etc.
await cmd.ExecuteNonQueryAsync();
}
}
一旦您知道如何提取和存储数据,就可以完成代码以从API提取数据并将其插入。可能看起来像这样:
public async Task DoTheMigration()
{
var users = await GetUsers();
var tasks = users.Select
(
u => InsertUser(u)
);
await Task.WhenAll(tasks.ToArray());
}
作为最后一步,编写一系列存储过程或DTS包,以将数据从临时表移至其最终的存放位置。如果您使用的是MS Access,则可以编写一系列查询并与某些VBA一起执行。在较高水平上,它将:
检查临时表中是否存在但最终表中不存在的任何记录,并将它们插入最终表中。
检查最终表中是否存在但临时表中不存在的任何记录,然后删除它们或将它们标记为已删除。
检查具有相同列值的所有公共记录,并更新最终表。
这些开发活动中的每一个都会引发自己的一系列问题,您可以将其与详细信息一起发回到StackOverflow。因为这是您的问题,没有足够的针对性来提供更深入的答案。