设为首页 - 加入收藏 华夏网 (http://www.hxwgxz.com)- 云主机,资讯,互联网,人工智能,云计算,大数据,区块链,VR,站长网!
热搜: 2019 2020 2017 2018
当前位置: 主页 > 编程 > 正文

azure – 如何在文档数据库中上载多个文档(批量)

发布时间:2021-01-21 17:38 所属栏目:[编程] 来源:网络整理
导读:我有文件列表(对象),该对象有多个文件,即Json记录存在,但是当我尝试上传文件串(记录)时,它不会上传到文档数据库,但是当我上传单个文档记录时,它会成功上传. ListMyModelClass listObj = new ListMyModelClass(); Document doc = await DocumentClient.CreateD

我有文件列表(对象),该对象有多个文件,即Json记录存在,但是当我尝试上传文件串(记录)时,它不会上传到文档数据库,但是当我上传单个文档记录时,它会成功上传.

List<MyModelClass> listObj = new List<MyModelClass>();
  Document doc = await DocumentClient.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id,listObj);

上面的代码不工作…..

foreach (var item in listObj )
    {
      Document doc = await Client.CreateDocumentAsync("dbs/" + DocumentDatabase.Id + "/colls/" + DocumentCollection.Id,item);
    }

这段代码对我有用…..

Syntax : CreateDocumentAsync(String,?Object,?RequestOptions,?Boolean)
 Object :- Document object // I Know it as per syntax it need to be "Document Type".

我想要任何其他方式一次上传所有文档….

解决方法

您不能一次插入多个文档.对CreateDocumentAsync()的调用仅适用于单个文档.

要实现这一点,您需要设计某种类型的服务器端存储过程来完成此操作,然后在一次调用中将文档数组传递给该函数.您可能希望查看this answer以查看其他人如何使用服务器端函数解决此问题,实质上是在本地创建文档数组,然后在其存储过程中遍历数组.所以,创建这样的东西(摘自该答案):

docObject = {
  "items": [{doc},{doc},{doc}]
}

并将docObject传递给您的存储过程.

最终,您的存储过程仍然会进行单独的插入调用,每个文档一个.但是……你不会有多次网络往返.并且插入将是事务性的(如果其中一个插入失败,或者您抛出异常,则其他插入将被回滚).

【免责声明】本站内容转载自互联网,其相关言论仅代表作者个人观点绝非权威,不代表本站立场。如您发现内容存在版权问题,请提交相关链接至邮箱:bqsm@foxmail.com,我们将及时予以处理。

网友评论
推荐文章