【问题标题】:Cosmos DB TransactionalBatch error after update to dotnet 5更新到 dotnet 5 后出现 Cosmos DB TransactionalBatch 错误
【发布时间】:2021-06-19 13:24:08
【问题描述】:

我的基础存储库中有一些方法可以在 Cosmos DB 上执行一些批处理操作,它们是这样的:

public async Task AddRangeAsync(List<T> entities)
    {
        var container = _cosmosDbClientFactory.GetContainer(CollectionName);
        var entitiesList = entities.Split(_maxItemsPerBatch).ToList();

        foreach (var items in entitiesList)
        {
            var partitionKey = ResolvePartitionKey(items.FirstOrDefault());
            var transactionalBatch = container.CreateTransactionalBatch(partitionKey);

            items.ToList().ForEach(item => transactionalBatch.CreateItem(item));

            var result = await transactionalBatch.ExecuteAsync();

            if (!result.IsSuccessStatusCode)
            {
                throw new CosmosDbBatchOperationException(result.ErrorMessage);
            }
        }
    }

今天我将项目的 dotnet 版本从 dotnet 3.1 迁移到 5,之后出现此错误:

System.MissingMethodException:找不到方法:'System.Threading.Tasks.Task1&lt;Microsoft.Azure.Cosmos.Serialization.HybridRow.Result&gt; Microsoft.Azure.Cosmos.Serialization.HybridRow.RecordIO.RecordIOStream.ReadRecordIOAsync(System.IO.Stream, System.Func21<Byte>,Microsoft.Azure.Cosmos.Serialization.HybridRow.Result>, System.Func21<Byte>,Microsoft.Azure.Cosmos.Serialization.HybridRow.Result>, Microsoft.Azure.Cosmos.Serialization.HybridRow.MemorySpanResizer1)'。

这发生在这一行:

var result = await transactionalBatch.ExecuteAsync();

版本信息:

  • Microsoft.Azure.Cosmos v3.17.0
  • Dotnet 5.0.201

有人知道怎么解决吗?

【问题讨论】:

    标签: .net-core azure-cosmosdb azure-cosmosdb-sqlapi .net-5


    【解决方案1】:

    我检查了我所有的项目,它们引用了相同的 sdk 版本,所以我清理了我的解决方案并删除了所有 obj 和 bin 文件夹并再次尝试,但没有成功。 然后我尝试了这个solution,因为我使用的是 Microsoft.Azure.Cosmos 3.17.0AspNetCore.HealthChecks.CosmosDb 5.0.3,所以我降级了 AspNetCore .HealthChecks.CosmosDb 升级到版本 3.1.2 并且可以正常工作。

    【讨论】:

      【解决方案2】:

      看起来您可能遇到了与SDK issue 中讨论的相同的问题。

      一个完整的二进制清理和重建值得尝试清除Microsoft.Azure.Cosmos.Serialization.HybridRow.dll 的依赖冲突。如果这不起作用,您可以尝试将您的详细信息添加到该问题线程。

      【讨论】:

      • 谢谢,看到github讨论,我尝试删除objbin文件夹,但是没有解决。
      • 分享您的csproj 文件或其他有关使用中的依赖项的详细信息可能会有所帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-12-21
      • 2019-04-03
      • 1970-01-01
      • 1970-01-01
      • 2016-10-30
      • 2021-04-20
      相关资源
      最近更新 更多