[英]How to obtain the AssignedLicenses using Microsoft.Graph Client Library
[英]Clarification on how to update (patch) objects using the Microsoft.Graph Client
以下代码是我到目前为止使用Microsoft Graph Client Library更新对象的唯一方法
场景:
码
var client = new GraphServiceClient(...);
var org = client.Organization["orgid"].Request().GetAsync().Result;
var secPhones = new List<string>(org.SecurityComplianceNotificationPhones);
secPhones.Add("12345");
var patchOrg = new Organization();
patchOrg.SecurityComplianceNotificationPhones = secPhones;
var orgReq = new OrganizationRequest(
client.Organization[org.Id].Request().RequestUrl,
client, new Option[] {});
orgReq.UpdateAsync(patchOrg).Wait();
我需要使用patchOrg实例,因为有两件事:
“在请求正文中,提供应更新的相关字段的值。请求正文中未包含的现有属性将保留其先前的值,或者根据对其他属性值的更改重新计算。为获得最佳性能,您不应该包括尚未改变的现有值。“
如果你真的这样做包括没有改变现有的值(即assginedLicenses)请求失败,如果这些现有值是只读的。
我的问题是:是否有更简单的方法来更新现有对象,例如在Azure ActiveDirectory GraphClient中 ? 仅供比较,Azure Active Directory Graph中的相同方案
var client = new ActiveDirectoryClient(...);
var org = client.TenantDetails.GetByObjectId("orgid").ExecuteAsync().Result;
org.SecurityComplianceNotificationPhones.Add("12345");
org.UpdateAsync().Wait();
Graph客户端库模型与您链接的AAD客户端库的旧SDK模型略有不同。 较旧的模型传递了试图变得更聪明的对象以及更改哪些属性的原因,只发送了那些属性。 这个模型的一个主要缺点是,库在后台进行了更多的服务调用,并且在每次调用中都有更重的负载,因为ExecuteAsync()通常需要检索请求构建器链中的每个对象。 较新的库确实要求开发人员对传递的数据做更明确的推理,同时还要更好地控制网络调用和负载。 每种型号都有其权衡。
为了实现你想要的,这里是我推荐的方法,而不是完全创建第二个组织对象:
var client = new GraphServiceClient(...);
var orgRequest = client.Organization["orgid"].Request();
var org = orgRequest.Select("securityComplianceNotificationPhones").GetAsync().Result;
var secPhones = new List<string>(org.SecurityComplianceNotificationPhones);
secPhones.Add("12345");
org.SecurityComplianceNotificationPhones = secPhones;
orgRequest.UpdateAsync(org).Wait();
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.