Linq 属性不是id的CreateDocumentQuery()
我正在尝试使用DocumentDB中id以外的属性查询文档。我找到了一个解决方案,但我不确定在执行查询时URL应该是什么。例如,在此senario中:Linq 属性不是id的CreateDocumentQuery(),linq,rest,api,azure,azure-cosmosdb,Linq,Rest,Api,Azure,Azure Cosmosdb,我正在尝试使用DocumentDB中id以外的属性查询文档。我找到了一个解决方案,但我不确定在执行查询时URL应该是什么。例如,在此senario中: var families = from f in client.CreateDocumentQuery<Family>(colSelfLink) where f.Address.City != "NY" select f; var families=来自client.CreateDocumentQuery
var families = from f in client.CreateDocumentQuery<Family>(colSelfLink)
where f.Address.City != "NY"
select f;
var families=来自client.CreateDocumentQuery(colSelfLink)中的f
f地址城市在哪里!=“纽约”
选择f;
如果是getFamilyById,则可能是xxxxx=家族id所在的位置
如果是getFamilyByCity,则无法再使用此格式:其中xxxxx=城市名称。因为API会混淆您选择的是家庭id还是城市名称。所以我认为我们应该使用URL,比如where xxxx=城市名称
但我想知道我们如何才能做到这一点
以下是我的示例代码:
namespace Family.Controllers
{
[Produces("application/json")]
[Route("api/Family")]
public class FamilyController : Controller
{
[HttpGet]
public async Task<IEnumerable<Family>> GetAllAsync()
{
var families= await FamilyProfile.DocumentDBRepository<Family>.GetIndividualsAsync(t => t.PrimaryKey != null);
return families;
}
[HttpGet("{id}")]
public async Task<IActionResult> GetByIdAsync(string id)
{
var family= await DocumentDBRepository<Individual>.GetFamilyAsync(id);
if (family== null)
{
return NotFound();
}
return new ObjectResult(family);
}
[HttpGet("{FamilyID}")]
[Route("/ByCity")]
public async Task<IActionResult> GetByCityAsync(string city)
{
var family= await DocumentDBRepository<Family>.GetFamilyAsyncByFamilyID(city);
if (family== null)
{
return NotFound();
}
return new ObjectResult(family);
}
}
}
命名空间族.控制器
{
[产生(“应用程序/json”)]
[路线(“api/系列”)]
公共类家庭控制器:控制器
{
[HttpGet]
公共异步任务GetAllAsync()
{
var families=await FamilyProfile.DocumentDBRepository.GetIndividualsAsync(t=>t.PrimaryKey!=null);
返回家庭;
}
[HttpGet(“{id}”)]
公共异步任务GetByIdAsync(字符串id)
{
var family=await DocumentDBRepository.GetFamilyAsync(id);
if(family==null)
{
返回NotFound();
}
返回新的ObjectResult(族);
}
[HttpGet(“{FamilyID}”)]
[路线(“/按城市”)]
公共异步任务GetByCityAsync(字符串城市)
{
var family=await DocumentDBRepository.GetFamilyAsyncByFamilyID(城市);
if(family==null)
{
返回NotFound();
}
返回新的ObjectResult(族);
}
}
}
当我运行时,它返回404,并且断点未命中GetByCityAsync(字符串城市)。对我应该研究的问题有什么建议吗?谢谢
所以我认为我们应该使用URL,比如where xxxx=城市名称
根据您的描述和代码,我建议您可以修改关于GetByCityAsync的路由
改变
[路线(“/ByCity”)]
到
[Route("ByCity/{city}")]