如何传递分区键来执行存储过程?
How do you pass a PartitionKey to Execute a StoredProcedure?
我正在尝试从 .net SDK (v1.6.3) 对分区集合(服务器端分区)执行存储过程。
await client.ExecuteStoredProcedureAsync<string>(UriFactory.CreateStoredProcedureUri("db0", "collection0", "testsproc0"), storedProcedureParams);
我收到错误 "PartitionKey value must be supplied for this operation"。事实上,当我使用 Script Explorer 时,我在 Azure 门户中看到了这个错误。但是,我看不到添加 PartitionKey 的方法。这是现在 API 和分区集合的限制,还是我遗漏了什么?
您可以通过将重载的 ExecuteStoredProcedureAsync 方法与 RequestOptions 结合使用来传入分区键。例如,
await client.ExecuteStoredProcedureAsync<DeviceSignal>(
UriFactory.CreateStoredProcedureUri("db", "coll", "SetLatestStateAcrossReadings"),
new RequestOptions { PartitionKey = new PartitionKey("XMS-001") }, sprocsParams);
我收到了一个类似的错误,发现我在创建文档集合时有一个不正确的 Partition Key Path
,如下面的 collectionDefinition.PartitionKey.Paths.Add("/LastName")
行所示。我的 ExecuteStoredProcedure RequestOption 与我在 new RequestOptions { PartitionKey = new PartitionKey("matchingLastNameSelectionHere") }
中选择的字段不匹配。希望这有帮助。
private static async Task<DocumentCollection> CreateCollectionAsync(string dbLink, string id)
{
DocumentCollection collectionDefinition = new DocumentCollection { Id = id };
collectionDefinition.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.String) { Precision = -1 });
collectionDefinition.PartitionKey.Paths.Add("/LastName");
return await _client.CreateDocumentCollectionAsync(
dbLink,
collectionDefinition,
new RequestOptions { OfferThroughput = 400 });
}
执行代码
await client.ExecuteStoredProcedureAsync<DeviceSignal>(UriFactory.CreateStoredProcedureUri("db", "coll", "SetLatestStateAcrossReadings"), new RequestOptions { PartitionKey = new PartitionKey("matchingLastNameSelectionHere") }, sprocsParams);
我正在尝试从 .net SDK (v1.6.3) 对分区集合(服务器端分区)执行存储过程。
await client.ExecuteStoredProcedureAsync<string>(UriFactory.CreateStoredProcedureUri("db0", "collection0", "testsproc0"), storedProcedureParams);
我收到错误 "PartitionKey value must be supplied for this operation"。事实上,当我使用 Script Explorer 时,我在 Azure 门户中看到了这个错误。但是,我看不到添加 PartitionKey 的方法。这是现在 API 和分区集合的限制,还是我遗漏了什么?
您可以通过将重载的 ExecuteStoredProcedureAsync 方法与 RequestOptions 结合使用来传入分区键。例如,
await client.ExecuteStoredProcedureAsync<DeviceSignal>(
UriFactory.CreateStoredProcedureUri("db", "coll", "SetLatestStateAcrossReadings"),
new RequestOptions { PartitionKey = new PartitionKey("XMS-001") }, sprocsParams);
我收到了一个类似的错误,发现我在创建文档集合时有一个不正确的 Partition Key Path
,如下面的 collectionDefinition.PartitionKey.Paths.Add("/LastName")
行所示。我的 ExecuteStoredProcedure RequestOption 与我在 new RequestOptions { PartitionKey = new PartitionKey("matchingLastNameSelectionHere") }
中选择的字段不匹配。希望这有帮助。
private static async Task<DocumentCollection> CreateCollectionAsync(string dbLink, string id)
{
DocumentCollection collectionDefinition = new DocumentCollection { Id = id };
collectionDefinition.IndexingPolicy = new IndexingPolicy(new RangeIndex(DataType.String) { Precision = -1 });
collectionDefinition.PartitionKey.Paths.Add("/LastName");
return await _client.CreateDocumentCollectionAsync(
dbLink,
collectionDefinition,
new RequestOptions { OfferThroughput = 400 });
}
执行代码
await client.ExecuteStoredProcedureAsync<DeviceSignal>(UriFactory.CreateStoredProcedureUri("db", "coll", "SetLatestStateAcrossReadings"), new RequestOptions { PartitionKey = new PartitionKey("matchingLastNameSelectionHere") }, sprocsParams);