2017-10-12 170 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,以便在所有情況下都能可靠地處理增量,即使在出現此特定情況時也是如此不能依賴圖書館的三角洲 –