2017-10-12 203 views
3

我正在使用我从Nuget下载的Microsoft.Graph库。我在使用deltas进行跟踪变更时遇到了问题。假设Microsoft图形更改跟踪

我使用类似下面的代码得到改变用户:

​​

我的问题是,在这种情况下,什么获取返回的是一个User对象。但是,由于这是delta,并非对象中的所有字段都被填充。只有那些已经改变的人才能保证填充。

现在我要解析手动返回的JSON,很容易看到哪些字段实际上已包含在响应中,因为只有那些将包含在JSON中。

但是,库返回一个User对象,并保留尚未返回的字段为null。在这种情况下,似乎不可能在delta中没有返回的字段与实际包含null值的字段之间进行区分。

有什么我错过了图书馆应该如何使用?因为它看起来好像库确实丢失了一些关键信息,因为我不能依靠返回的User对象来可靠地更新我的数据库,因为包含null值的更改字段和未更改的字段都会导致返回的.Net对象中的null值。

这显然也适用于其他类型的资源,我只是选择Users为例。

回答

0

正如我在https://developer.microsoft.com/en-us/graph/docs/concepts/delta_query_users阅读API文档,它经济特区:

可选的$ select查询参数包含在请求 演示如何查询参数会自动包含在未来 请求。

我还没有试过这个。您是否包含要跟踪原始请求更改的属性?或者也许尝试$select=*返回所有内容?该API经济特区:

默认情况下,只有有限的一组属性返回 (businessPhones,显示名,给定名称,ID,JOBTITLE,邮件, mobilePhone,办公室位置,preferredLanguage,那么姓氏, 的UserPrincipalName)。

+0

是的,我知道有关文件,并且该部分是有据可查的。我具体询问了Microsoft.Graph.Net库,它应该将所有Web请求和JSON都抽象出来。 –

+0

特别是字段已更改为空值的情况。在这种情况下,库返回一个.Net对象,并将该字段设置为null。但是,如果它没有更改,那么该字段也会设置为空。无法区分这两种情况。这意味着人们不得不手动执行请求(例如,使用.Net WebRequest),并手动解析返回的json,以便在所有情况下都能可靠地处理增量,即使在出现此特定情况时也是如此不能依赖图书馆的三角洲 –