Я вижу в журналах/трассировках, что поставщик Entity Framework Cosmos DB отображает единицы запроса после каждой операции. Есть ли простой способ получить этот номер RU программно? Может быть очень полезен при интеграции и тестах производительности, CI/CD-гейтах и т. д. Это должно быть легко, верно? Он находится в заголовке ответа на HttpClient.
Вы можете программно получить единицы запроса, использованные в Azure Cosmos DB для каждой операции, с помощью объекта ответа.
// for read requests
double requestUnits = readResponse.RequestCharge;
// for query
double requestUnits = feadResponse.RequestCharge;
Пожалуйста, просмотрите объектную модель. Подобные API есть и в других языковых SDK. https://learn.microsoft.com/dotnet/api/microsoft.azure.cosmos.response-1?view=azure-dotnet
Возможно, это не самый простой метод, но из-за отсутствия других ответов я подумал, что его стоит упомянуть.
Вы можете добавить пользовательский HttpClientFactory
, используя класс CosmosDbContextOptionsBuilder
. Затем пусть ваша фабрика даст вам экземпляр HttpClient
с пользовательским DelegatingHandler
. В обработчике вы можете переопределить SendAsync
и получить ответ, который должен включать плату RU в заголовках, если это применимо.
Мой вопрос заключается в том, как получить RU в ответе Entity Framework (вероятно, что-то вроде `dbContext.Database.Client....``)