Есть ли лучший способ обновить CosmosDB без идентификатора? ⇐ C#
-
Anonymous
Есть ли лучший способ обновить CosmosDB без идентификатора?
У меня есть клиентское приложение, в котором я создаю модели и сохраняю их локально, а также отправляю сопоставленный DTO в веб-API.
class TestModel // Локально хранимая модель { Идентификатор владельца руководства; Guid LocalId; строковое имя; } класс TestDto // Удаленно хранимая модель { Идентификатор гида; Идентификатор владельца руководства; Guid LocalId; строковое имя; } На стороне сервера: Когда я отправляю сопоставленный DTO в Web Api, я хотел бы обновить его, но поскольку модель не знает идентификатор хранящегося в базе данных DTO, я использую OwnerId и LocalId для обнаружения сохраненного DTO для обновления.
public async Task UpdateAsync(TestDto testDto) { IOrderedQueryable queryable = _container.GetItemLinqQueryable(); // Создаем запрос LINQ var match = queryable.Where(p => p.LocalId == testDto.LocalId && p.OwnerId == testDto.OwnerId); использование FeedIterator linqFeed = match.ToFeedIterator(); Результаты List = новый List(); пока (linqFeed.HasMoreResults) { вар ответ = ждут linqFeed.ReadNextAsync(); results.AddRange((IEnumerable)response); } вар результат = результаты.SingleOrDefault(); if (результат!= null && results.Count == 1) { testDto.Id = результат.Id; // нужно установить обновление ждут _container.UpsertItemAsync(testDto, new PartitionKey(testDto.OwnerId.ToString())); } вернуть результат; } Есть ли лучший способ отфильтровать? Выбрать обновляемый документ? Вместо linqFeed и SingleOrDefault?
У меня есть клиентское приложение, в котором я создаю модели и сохраняю их локально, а также отправляю сопоставленный DTO в веб-API.
class TestModel // Локально хранимая модель { Идентификатор владельца руководства; Guid LocalId; строковое имя; } класс TestDto // Удаленно хранимая модель { Идентификатор гида; Идентификатор владельца руководства; Guid LocalId; строковое имя; } На стороне сервера: Когда я отправляю сопоставленный DTO в Web Api, я хотел бы обновить его, но поскольку модель не знает идентификатор хранящегося в базе данных DTO, я использую OwnerId и LocalId для обнаружения сохраненного DTO для обновления.
public async Task UpdateAsync(TestDto testDto) { IOrderedQueryable queryable = _container.GetItemLinqQueryable(); // Создаем запрос LINQ var match = queryable.Where(p => p.LocalId == testDto.LocalId && p.OwnerId == testDto.OwnerId); использование FeedIterator linqFeed = match.ToFeedIterator(); Результаты List = новый List(); пока (linqFeed.HasMoreResults) { вар ответ = ждут linqFeed.ReadNextAsync(); results.AddRange((IEnumerable)response); } вар результат = результаты.SingleOrDefault(); if (результат!= null && results.Count == 1) { testDto.Id = результат.Id; // нужно установить обновление ждут _container.UpsertItemAsync(testDto, new PartitionKey(testDto.OwnerId.ToString())); } вернуть результат; } Есть ли лучший способ отфильтровать? Выбрать обновляемый документ? Вместо linqFeed и SingleOrDefault?
Мобильная версия