首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何检索在一个带有导航属性的调用中分配给服务主体的所有用户

如何检索在一个带有导航属性的调用中分配给服务主体的所有用户
EN

Stack Overflow用户
提问于 2021-06-09 07:19:13
回答 1查看 352关注 0票数 0

如何在尽可能少的调用中检索具有导航属性(如Manager )和属性(如全名)的服务主体中的所有用户?

我正在使用Microsoft.Graph包,我尝试过:

尝试1:

代码语言:javascript
运行
复制
await graphClient.ServicePrincipals["objectId"].AppRoleAssignedTo.Request().GetAsync();

但这只给了我is,这是‘好的’,但然后我将必须得到所有的用户分开,这将作出许多调用的图形API。

我可以使用DirectoryObjects同时获取所有用户,但这不允许我扩展Manager属性。

例如:

代码语言:javascript
运行
复制
var users = await graphClient.DirectoryObjects.GetByIds(principals.Select(p => p.PrincipalId.ToString()), new string[1] { "User" }).Request().Expand("manager").PostAsync();

给我一个错误:

代码语言:javascript
运行
复制
Could not find a property named 'manager' on type 'microsoft.graph.directoryObject'.

尝试2:

我还试图通过使用过滤器来获取用户

代码语言:javascript
运行
复制
await graphClient.Users.Request().Filter("appRoleAssignments/any(u:u/principalId eq objectId)").Expand(u => u.Manager).GetAsync();

但这给了我一个错误:

代码语言:javascript
运行
复制
Request_UnsupportedQuery
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-06-09 09:55:40

您可以这样编写代码:

代码语言:javascript
运行
复制
var user = await graphClient.Users.Request().Filter("id in ('{objectId1}', '{objectId2}', ..., '{objectIdn}')").Expand(u => u.Manager).Select("displayName").GetAsync();

理想情况下,这将只使用一个调用来返回所需的数据。

但是基于“在尽可能少的调用中”的需求,我们将不得不面对一个问题,即我们需要将所有的对象ids都放入请求中,这可能会导致请求太长并最终失败。

我没有测试这个场景,这只是一个可能有帮助的方向。

我仍然建议您使用循环来获取信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67899339

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档