Я создал коллекцию Cosmos DB для хранения пользователей.Эта коллекция имеет уникальное ограничение на адреса электронной почты.Идентификатор пользователя - Guid.Когда я добавляю пользователя в коллекцию, возникает исключение с конфликтом HttpStatusCode, когда Guid уже существует, а также когда адрес электронной почты уже существует.Есть ли способ узнать, какое ограничение вызвало ошибку?
Уникальное ограничение добавляется следующим образом:
myCollection.UniqueKeyPolicy = new UniqueKeyPolicy
{
UniqueKeys =
new Collection<UniqueKey>
{
new UniqueKey { Paths = new Collection<string> { "/EmailAddress/Address" }},
}
};
(Ожидаемое) исключение возникает после вызова CreateDocumentAsync, и я ловлюисключение, подобное следующему:
catch (DocumentClientException e)
{
if (e.StatusCode == System.Net.HttpStatusCode.Conflict)
{
// I can't find anything in the Exception that indicates what constraint was violated
}
}
e.Error содержит:
{
"code":"Conflict",
"message":"Message: {\"Errors\":[\"Unique index constraint violation.\"]}\r\nActivityId: 3....6, Request URI: /apps/3....b/services/9....f/partitions/b....4/replicas/131903490859125028p/, RequestStats: \r\nRequestStartTime: 2018-12-27T15:56:06.4927341Z, Number of regions attempted: 1\r\n, SDK: Microsoft.Azure.Documents.Common/2.1.0.0"
}
Причина, по которой я хочу различить, заключается в том, чтобы я мог вернуть лучшее сообщение клиенту.Я знаю, что Guid обычно будет уникальным, но клиенты могут вызывать CreateDocumentAsync для существующего объекта.Кроме того, в другой ситуации мне может потребоваться несколько уникальных ограничений на коллекцию.
Есть идеи?