我目前正在编写一种方法,为了降低交易成本,将实体以100个批量插入Azure表服务。
插入的实体是不可变的。即如果两个权利对象之间的PartitionKey和RowKey相同,则意味着所有其他属性也是相同的。因此,我永远不需要对此表进行更新,因为插入后实体将保持不变。
我面临的问题是,在此批次中,我不能100%确定之前没有插入任何实体。因此,如果我只是正常插入实体(通过AddObject和SaveChanges),则事务可能会失败,并显示无法添加实体的错误,因为它已经存在。由于事务是原子的,这意味着没有添加任何权限。
我无法检查事务中每个实体是否存在,因为这样做成本太高(每个实体一个查询成本太高,使用OR的单个查询会导致整个表中的表扫描)。因此,我需要一些方法来添加一个对象,如果它不存在并忽略它或更新它,如果它存在(忽略或更新对我来说是相同的,因为权利是不可变的)。
如何在Azure Table Services中实现此目的?
答案 0 :(得分:2)