Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/291.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 将海量数据从返回JSON的web服务移动到数据库表的最有效方法是什么?_C#_Sql_Json_Json.net_Sqlbulkcopy - Fatal编程技术网

C# 将海量数据从返回JSON的web服务移动到数据库表的最有效方法是什么?

C# 将海量数据从返回JSON的web服务移动到数据库表的最有效方法是什么?,c#,sql,json,json.net,sqlbulkcopy,C#,Sql,Json,Json.net,Sqlbulkcopy,好的,我的情况是这样的:我必须调用一个远程Web服务,它以json对象的形式返回数据。我需要获取这些数据并将其映射到数据库中的现有表中。因此,我需要映射这些数据,然后以最有效的方式将其添加到现有表中。研究完成后,将数据转换为可用类型的最简单方法是创建一个与json对象匹配的c#类,然后创建一个与我的数据库表匹配的DataTable对象,并映射2,然后执行SQLBulkCopy将数据放入表中。但这真的是最好的方法吗?我最终不得不将JSON映射到一个类,然后将该类映射到datatable,然后将da

好的,我的情况是这样的:我必须调用一个远程Web服务,它以json对象的形式返回数据。我需要获取这些数据并将其映射到数据库中的现有表中。因此,我需要映射这些数据,然后以最有效的方式将其添加到现有表中。研究完成后,将数据转换为可用类型的最简单方法是创建一个与json对象匹配的c#类,然后创建一个与我的数据库表匹配的DataTable对象,并映射2,然后执行SQLBulkCopy将数据放入表中。但这真的是最好的方法吗?我最终不得不将JSON映射到一个类,然后将该类映射到datatable,然后将datatable映射到数据库实体,如果这是实现这一点的方法,好吧,但在我看来,应该有一种简单得多的方法来实现这一点

示例代码:

JSON数据:

[
 { 
    "FirstName":"John",
    "LastName":"Doe", 
    "Address":"123 Main St."
 },
 {
     "FirstName":"Jane",
     "LastName":"Doe", 
     "Address":"123 Main St."
 }
]
类对象:

public class ContactConversion
{
    public string FirstName {get; set; }
    public string LastName { get; set; }
    public string Address { get; set; }
}

apiReturnData = remotewebserviceCall();
List<ContactConversion> contacts = JsonConvert.DeserializeObject<List<ContactConversion>>(apiReturnData);
DataTable leads = CreateTempLeadsTable();
DoBulkCopy(DataTable, contacts);
公共类ContactConversion
{
公共字符串名{get;set;}
公共字符串LastName{get;set;}
公共字符串地址{get;set;}
}
apiReturnData=remotewebserviceCall();
List contacts=JsonConvert.DeserializeObject(apiReturnData);
DataTable leads=CreateTemplaedStable();
DoBulkCopy(数据表、联系人);

完成任务所需的代码似乎非常少,如果在合理的时间内运行,那么问题到底是什么?根据sae,这并不是很糟糕,只是似乎太多了,我必须引入Json对象,创建一个匹配的类并映射到该类,然后创建一个datatable,将该类映射到datatable,然后将datatable或datareader传递给SqlBulkCopy,并再次映射到sql表。必须映射到许多不同的对象似乎太过分了,我想知道我是否遗漏了什么,为了简洁起见,本例中省略了许多实际代码。