Я использую V3 (предварительный просмотр) SDK Cosmos DB для .NET .
При получении элемента с использованием ReadItemAsync в результате ETag доступен из CosmosItemResponse обертка объекта сущности SalesOrder :
CosmosItemResponse<SalesOrder> itemResponse =
await container.Items.ReadItemAsync<SalesOrder>(
partitionKey: "Account1",
id: "SalesOrder1");
Console.WriteLine("ETag of read item - {0}", itemResponse.ETag);
Но при получении элемента с использованием CreateItemQuery (передачаSQL), результат помещается в CosmosQueryResponse , содержащий только массив элементов вместо массива CosmosItemResponse , поэтому я не могу получить ETag каждого элемента.Определение сущности Семейство находится в конце этого файла .
var query = new CosmosSqlQueryDefinition("SELECT * FROM Families f WHERE f.id = @id AND f.Address.City = @city")
.UseParameter("@id", "AndersonFamily")
.UseParameter("@city", "Seattle");
List<Family> results = new List<Family>();
var resultSetIterator = container.Items.CreateItemQuery<Family>(query, partitionKey: "Anderson");
while (resultSetIterator.HasMoreResults) {
results.AddRange((await resultSetIterator.FetchNextSetAsync()));
}
Я не могу найти другие способы получения элементов с использованием SQL, поэтому ETag возвращается ссам предмет.У кого-нибудь есть решение?