2017-10-12 2 views
3

나는 Nuget에서 벗어난 Microsoft.Graph 라이브러리를 사용하고 있습니다. 델타를 사용한 변경 추적과 관련하여 문제가 있습니다.Microsoft 그래프 변경 내용 추적

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으로 남겨 둡니다. 이 경우 단순히 델타에서 반환되지 않은 필드와 실제로 null 값을 포함하는 필드 사이의 모호성을 없애는 것은 가능하지 않습니다.

라이브러리를 사용하는 방법이 누락 되었습니까? null 값을 포함하는 변경된 필드와 변경되지 않은 필드가 있기 때문에 반환 된 User 개체를 신뢰할 수있게 데이터베이스를 업데이트 할 수 없기 때문에 라이브러리에 중요한 정보가 손실되는 것처럼 보입니다. 반환 된 .Net 객체의 값은 모두 null입니다.

이는 분명히 다른 유형의 리소스에도 적용됩니다. 예를 들어 Users을 선택했습니다. 내가 https://developer.microsoft.com/en-us/graph/docs/concepts/delta_query_users에서 API 문서를 읽으면서

답변

0

는 경제 특구 : 쿼리 매개 변수가 자동으로 미래 요청에 포함하는 방법을

옵션 $ 선택 쿼리 매개 변수 에 요청 시위를 포함되어 있습니다.

나는 이것을 시도하지 않았다. 원래 요청에 대한 변경 내용을 추적하려는 속성을 포함 시켰습니까? 또는 모든 것을 반환하려면 $select=*을 시도해보십시오. API는 경제 특구 :

기본적으로, 속성의 제한된 세트 (businessPhones, 나 displayName givenName과, 아이디, jobTitle, 메일, 모바일 폰, 사무실 위치,하여 preferredLanguage, 성, userPrincipalName 사용를) 을 반환됩니다.

+0

예 문서에 대해 알고 있으며 그 부분은 잘 설명되어 있습니다. 모든 웹 요청과 json을 추상화하기로되어있는 Microsoft.Graph .Net 라이브러리에 대해 구체적으로 묻습니다. –

+0

특히 필드가 null 값으로 변경된 경우 이 경우 라이브러리는 해당 필드가 null로 설정된 .Net 객체를 반환합니다. 그러나 변경되지 않은 경우 해당 필드는 null로 설정됩니다. 두 경우를 구분할 수 없게 만듭니다. 즉, 예를 들어 .Net WebRequest를 사용하여 수동으로 요청을 수행하고 반환 된 json을 수동으로 구문 분석해야만 모든 경우에 델타를 안정적으로 처리 할 수 ​​있습니다. 델타 도서관에 의존 할 수 없다. –