我正在使用我从Nuget获得的Microsoft.Graph库。关于使用增量进行更改跟踪,我遇到了问题。假设
我正在使用类似下面代码的内容对用户进行更改:
var usersDeltaRequest = client
.Users
.Delta()
.Request(usersDeltaLink == null ? new Option[0] : new []
{
new QueryOption("$deltatoken", usersDeltaLink)
});
var users = await usersDeltaRequest.GetAsync();
foreach (var user in users)
{
//code that updates the user goes here
}
我的问题是,在这种情况下,返回的是一个User
对象。但是,由于这是delta
,因此不会填充对象中的所有字段。保证仅填充已更改的那些。
现在我要解析手动返回的JSON
,很容易看出哪些字段实际上已包含在响应中,因为只有那些字段才会包含在JSON
中。
但是,库会返回一个User
对象,并将尚未返回的字段保留为null
。在这种情况下,似乎无法消除在delta中尚未返回的字段与实际包含空值的字段之间的歧义。
在库应该如何使用方面我是否缺少某些东西?因为现在看起来好像库确实丢失了一些关键信息,因为我不能依赖返回的User
对象来可靠地更新我的数据库,因为包含null
值的更改字段并且一个未更改的字段都会在返回的.Net对象中生成null
值。
这显然也适用于其他类型的资源,我只选择了Users
作为示例。
答案 0 :(得分:0)
当我在https://developer.microsoft.com/en-us/graph/docs/concepts/delta_query_users阅读API文档时,sez:
可选的$ select查询参数包含在请求中 演示了如何在将来自动包含查询参数 请求。
我还没试过这个。您是否在原始请求中包含了要跟踪更改的属性?或者尝试$select=*
返回一切? API sez:
默认情况下,仅返回一组有限的属性 ( businessPhones,displayName,givenName,id,jobTitle,mail, mobilePhone,officeLocation,preferredLanguage,surname, 的UserPrincipalName )。