C# IQueryable/IEnumerable应用用途:针对Azure CosmosDB数据库的数据库查询请求
下面的代码是对C# IQueryable/IEnumerable应用用途:针对Azure CosmosDB数据库的数据库查询请求,c#,.net,azure-cosmosdb,azure-cosmosdb-sqlapi,C#,.net,Azure Cosmosdb,Azure Cosmosdb Sqlapi,下面的代码是对cosomosdb的查询,我想知道将向数据库发送多少次请求 这段代码在减少数据库查询方面有什么改进吗 public async Task<List<Employee>> GetEmployee(string userName) { IEnumerable<User> users = GetByUser(userName); return GetEmployee(users); } private IEnumerable<
cosomosdb
的查询,我想知道将向数据库发送多少次请求
这段代码在减少数据库查询方面有什么改进吗
public async Task<List<Employee>> GetEmployee(string userName)
{
IEnumerable<User> users = GetByUser(userName);
return GetEmployee(users);
}
private IEnumerable<User> GetByUser(string userName)
{
var captureResultHistoryLink = UriFactory.CreateDocumentCollectionUri(Database, Container);
var user = _documentClient.CreateDocumentQuery<User>(captureResultHistoryLink)
.Where(r => r.UserName == userName);
return user;
}
private async Task<List<Employee>> GetEmployee(IEnumerable<User> users)
{
var selectedUsers = users.Where(o => o.Age > 18);
foreach (var user in users)
{
if (selectedUsers.Contains(user.Id))
{
// ...
}
}
}
公共异步任务GetEmployee(字符串用户名)
{
IEnumerable users=GetByUser(用户名);
返回GetEmployee(用户);
}
私有IEnumerable GetByUser(字符串用户名)
{
var capturesulthistorylink=UriFactory.CreateDocumentCollectionUri(数据库、容器);
var user=\u documentClient.CreateDocumentQuery(CaptureResultThistoryLink)
。其中(r=>r.UserName==用户名);
返回用户;
}
私有异步任务GetEmployee(IEnumerable用户)
{
var selectedUsers=users.Where(o=>o.Age>18);
foreach(用户中的var用户)
{
if(selectedUsers.Contains(user.Id))
{
// ...
}
}
}
您可以使用Fiddler检查请求的次数 但是,看起来会有N个基于用户的请求。有两种处理方法 (i) 使用分页获取所有项目,并在客户端使用名称和年龄筛选用户
(ii)更改请求,从第一个请求本身的年龄和姓名中筛选用户。我认为不会有N个请求。