azure-cosmosdb - 如何使用 .net Sdk 版本 3 使用自定义序列化调用 CosmosDb 上的存储过程?
问题描述
我想要做的是使用 cosmos .net Sdk 版本 3 调用具有特定 Json 序列化配置的 SP。
使用版本 2,我可以在调用中设置 RequestOptions JsonSerializerSettings 属性。
现在有了版本 3,我没有那个选项,我唯一拥有的就是在客户端对象级别设置自定义配置。
这是唯一可用的选项吗?我必须为我需要的每个配置创建一个新客户端?
提前致谢
解决方案
你可以打电话ExecuteStoredProcedureStreamAsync
。参考:https ://github.com/Azure/azure-cosmos-dotnet-v3/blob/master/Microsoft.Azure.Cosmos/src/Resource/Scripts/Scripts.cs#L434
它的签名是:
public abstract Task<ResponseMessage> ExecuteStoredProcedureStreamAsync(
string storedProcedureId,
PartitionKey partitionKey,
dynamic[] parameters,
StoredProcedureRequestOptions requestOptions = null,
CancellationToken cancellationToken = default(CancellationToken));
这意味着它会给你一个ResponseMessage
支持,你可以用一个Content
(Stream) 反序列化你想要的任何东西。
如果你想序列化输入,还有另一种方法:
public abstract Task<ResponseMessage> ExecuteStoredProcedureStreamAsync(
string storedProcedureId,
Stream streamPayload,
PartitionKey partitionKey,
StoredProcedureRequestOptions requestOptions = null,
CancellationToken cancellationToken = default(CancellationToken));
哪里streamPayload
是Stream
. 示例用法:https ://github.com/Azure/azure-cosmos-dotnet-v3/blob/fad3daf789458bc73256d4b26bdd1e4cfc83b2ad/Microsoft.Azure.Cosmos/tests/Microsoft.Azure.Cosmos.EmulatorTests/StoredProcedureTests.cs#L474
MemoryStream streamPayload = new MemoryStream(Encoding.UTF8.GetBytes(@"[""one"",""two"",""three""]"));
ResponseMessage response = await this.scripts.ExecuteStoredProcedureStreamAsync(
storedProcedureId: sprocId,
streamPayload: streamPayload,
partitionKey: new Cosmos.PartitionKey(testPartitionId),
requestOptions: null,
cancellationToken: default(CancellationToken));
推荐阅读
- javascript - 如何使用 JOI 处理自定义验证中的错误?
- aws-sdk-go - DynamoDB 服务员什么都不做(WaitUntilTableNotExists、WaitUntilTableNotExistsWithContext)
- reactjs - Reactjs:TypeError:无法读取未定义的属性(读取“地图”)
- python - python中的基本for循环问题
- python-3.x - 使用argument=False 是一种好习惯吗?
- python - 尝试从 azure 管道中的 ubuntu vm 运行“conda install python=3.7”时,Conda 超时
- java - Java - 与 for 循环混淆:
- java - 控制 API 暴露 - Spring
- visual-studio - 为什么 Haskell 在输入“->”时给我这个解析错误?
- python - 在字典上使用 random.choice 并出现错误