2017-02-23 4 views
0

Azure Mobile App Service 소프트 삭제 및 증분 동기화 기능을 사용하고 있습니다. 나는 푸 엔티티에 대한이 같은 작업을 수행하여 클라이언트 측에서 거짓으로 삭제 플래그를 설정 한 다음 검색을 시도 :Azure Mobile App 서비스 메타 데이터 열 (삭제됨)이 SyncTables를 사용하여 설정됩니다.

1) foo.deleted = false; 
2) Client.GetSyncTable<Foo>().Update(foo); 
3) Client.GetSyncTable<Foo>().Where(w => w.id == "xxx" && w.deleted == false).ToListAsync(); 
//The above step 3 doesn't seem to return any results. 
4) Client.GetSyncTable<Foo>().Where(w => w.id == "xxx").ToListAsync(); //This returns a result; 

위의 모든 단계를 내가 오프라인 테이블에 대해 일어나고있는 이해.

나는 뒤에서 무슨 일이 벌어 질지 궁금했다. DeleteAsync 메서드를 사용할 수 있음을 알고 있지만 3 단계에서 결과가 반환되지 않지만 4 단계에서는 결과가 반환된다는 것을 이해하고 싶었습니다.

삭제 된 메타 데이터 열을 클라이언트 측에서 조작 할 수 없습니까? 당신이 ... 어디 (뭔가를) 수행 할 때 그것은 SQL 쿼리를 생성하지만 그것을 실행하지 않습니다, https://github.com/azure/azure-mobile-apps-net-client

짧은 버전 -

답변

0

당신은 GitHub의에 코드를 확인할 수 있습니다. 실제로 (예 : .ToListAsync()를 통해) 결과를 요청하면 쿼리를 실행하고 결과를 변환하여 사용자에게 반환합니다. 이렇게하면 복잡한 LINQ 식을 작성한 다음 가능한 가장 효율적인 방식으로 SQL 쿼리로 변환 할 수 있습니다.

+0

안녕하세요, 귀하의 회신에 감사드립니다. 누락 된 ToListAsync()는 오타였습니다. 미안합니다. (귀하의 블로그는 대단합니다!) 내 질문은 내가 할 때 1) foo.deleted = false; 2) Client.GetSyncTable () .UpdateAsync (foo); // 아래의 3 단계는 0 개의 레코드를 반환합니다. 3) Client.GetSyncTable () .Where (w => w.id == "xxx"&& w.deleted == false) .ToListAsync(); //하지만 4 단계에서 결과가 반환됩니다. 4) Client.GetSyncTable () .Where (w => w.id == "xxx"). ToListAsync(); 간단히 말해서 foo.deleted = true를 설정하고 DeleteAsync (foo)를 수행하는 것과 동일한 방식으로 UpdateAsync (foo)를 실행합니까 ?? –