我有一个客户端应用程序,在那里我创建模型并在本地存储,还将映射的DTO发送到Web API.
class TestModel // Locally stored model
{
Guid OwnerId;
Guid LocalId;
string Name;
}
class TestDto // Remotely stored model
{
Guid Id;
Guid OwnerId;
Guid LocalId;
string Name;
}
在服务器端: 当我将映射的DTO发送到Web Api时,我想要更新,但是因为模型不知道存储的DTO的ID,所以我使用OwnerID&;LocalID来检测要更新的存储的DTO.
public async Task<TestDto?> UpdateAsync(TestDto testDto)
{
IOrderedQueryable<TestDto> queryable = _container.GetItemLinqQueryable<TestDto>();
// Construct LINQ query
var matches = queryable.Where(p => p.LocalId == testDto.LocalId && p.OwnerId == testDto.OwnerId);
using FeedIterator<TestDto> linqFeed = matches.ToFeedIterator();
List<TestDto> results = new List<TestDto>();
while (linqFeed.HasMoreResults)
{
var response = await linqFeed.ReadNextAsync();
results.AddRange((IEnumerable<TestDto>)response);
}
var result = results.SingleOrDefault();
if (result != null && results.Count == 1)
{
testDto.Id = result.Id; // need set to update
await _container.UpsertItemAsync<TestDto>(testDto, new PartitionKey(testDto.OwnerId.ToString()));
}
return result;
}
有没有更好的过滤方法?若要 Select 可更新文档,请执行以下操作?而不是linqFeed和SingleOrDefault?