首页 文章

将实体插入多个Azure表存储分区(相同的表),并知道哪些插入失败(如果有)

提问于
浏览
2

我设置了Azure辅助角色,以从一些外部Web服务获取信息,将其解析为几种不同的实体类型,并将这些实体存储在Azure表存储中 . 至关重要的是,大多数(如果不是全部)这些实体都插入到表中的自己的分区中 .

我正在使用一个TableServiceContext扩展类,调用AddObject(EntityToBeInserted)以在创建时将新实体附加到tableservicecontext . 目前,我随后调用TableServiceContext.SaveChangesWithRetries(SaveChangesOptions.None)将这些实体保存到各自分区中的表中 . 一切正常 .

我的问题是:当它不能正常工作时会发生什么?我能够通过使其行和分区键不唯一来导致其中一个实体不被保存,但是我捕获该行为的错误消息并不表示哪个实体失败,只是在一个实体中有错误他们

我应该如何从每个实体进入其自己的分区的工作者角色中将实体保存到表存储(假设在其中一个存储调用中插入了2-30个实体),这样如果这些插入中的一个或多个失败,我将能够至少知道它是哪一个?这些操作对时间非常敏感,因此我不能遗憾地依赖长时间运行的重试选项来等待相关存储节点再次可用 .

谢谢,Alex

1 回答

  • 0

    答案是您不能跨表存储分区进行批量插入,因此您应该跟踪插入的实体的ID(partitionkey和rowkey),并验证它们在异步表存储插入调用的回调中是否成功 .

相关问题