gpt4 book ai didi

c# - 处理与 Azure 中实体组事务的冲突

转载 作者:行者123 更新时间:2023-12-03 01:58:36 25 4
gpt4 key购买 nike

我目前正在编写一种方法,为了降低交易成本,将实体以 100 个为批处理插入到 Azure 表服务中。

插入的实体是不可变的。 IE。如果两个实体对象之间的 PartitionKey 和 RowKey 相同,则意味着所有其他属性也相同。因此,我永远不需要更新该表,因为插入后实体将保持不变。

我面临的问题是,在这个批处理中,我无法 100% 确定之前没有插入任何实体。因此,如果我只是正常插入实体(通过 AddObject 和 SaveChanges),事务可能会失败,并出现无法添加实体的错误,因为它已经存在。由于事务是原子的,这意味着没有添加任何实体。

我无法检查事务中每个实体是否存在,因为这样做成本太高(每个实体一个查询成本太高,并且使用 OR 的单个查询会导致对整个表进行表扫描)。因此,我需要某种方法来添加对象(如果它不存在),并忽略它或更新它(如果存在)(忽略或更新对我来说是相同的,因为实体是不可变的)。

如何在 Azure 表服务中实现此目的?

最佳答案

根据this article目前没有办法“更新插入”实体(如果它已经存在)。当前的建议是使用多个辅助角色和多个线程来处理请求,检查每个实体是否存在。

关于c# - 处理与 Azure 中实体组事务的冲突,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1948277/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com