【发布时间】:2025-12-04 07:55:02
【问题描述】:
我目前正在编写一种方法,为了降低交易成本,将实体以 100 个为一组插入 Azure 表服务。
插入的实体是不可变的。 IE。如果两个实体对象之间的 PartitionKey 和 RowKey 相同,则意味着所有其他属性也相同。因此,我永远不需要更新此表,因为插入后实体将保持不变。
我面临的问题是,在这批中,我不能 100% 确定之前没有插入任何实体。因此,如果我只是正常插入实体(通过 AddObject 和 SaveChanges),则事务可能会失败,并出现无法添加实体的错误,因为它已经存在。由于事务是原子的,这意味着没有添加任何实体。
我无法检查事务中是否存在每个实体,因为这样做成本太高(每个实体一个查询的成本太高,而使用 OR 的单个查询会导致对整个表进行表扫描)。因此,我需要某种方法来添加一个对象,如果它不存在并忽略它或更新它,如果它存在(忽略或更新对我来说是相同的,因为实体是不可变的)。
如何在 Azure 表服务中实现这一点?
【问题讨论】:
标签: c# azure entity-group-transactions