다른 캘린더 프로그램과 교환을 연결하기 위해 ews-application을 작성하려고합니다. 나에게 무슨 일이 일어 났는지, 어떻게 알면 알 수 있습니까? 어떤 약속은 교환으로 삭제됩니까? 알 수있는 방법이 있습니까? API 및 설명서에서 찾을 수 없습니다.Exchange 웹 서비스 관리 됨, 삭제 된 약속 가져 오기
미리 감사드립니다.
다른 캘린더 프로그램과 교환을 연결하기 위해 ews-application을 작성하려고합니다. 나에게 무슨 일이 일어 났는지, 어떻게 알면 알 수 있습니까? 어떤 약속은 교환으로 삭제됩니까? 알 수있는 방법이 있습니까? API 및 설명서에서 찾을 수 없습니다.Exchange 웹 서비스 관리 됨, 삭제 된 약속 가져 오기
미리 감사드립니다.
는 사용자가 약속 (또는 항목)을 삭제하는 방법에 따라 여러 가지가 완료 :
당신은 삭제 된 항목에 대한 정보를 얻을 수있는 여러 가지 방법이있다. 참고 : Exchange 2010이 필요합니다.
나는 EWS Calendar Appointments를 Sql 테이블에 동기화하는 서비스를 작성했습니다.
삽입/업데이트 후 삭제의 경우 EWS가 아닌 데이터베이스에 행이 있으면 Exchange에서 삭제되므로 삭제하게됩니다. GUID를 사용하여 데이터베이스 및 교환에서 약속을 추적합니다. Exchange web services: why is ItemId not constant? [continued]
성능이 몇십 개 약속만으로도 괜찮 았는데, 나는 훨씬 더 큰 데이터 세트에서 시도 할 것이다. 답에 대한
Dim appointmentGuid As New List(Of String)
For Each appointment In appointments 'appointments is IEnumerable(Of Appointment) from EWS
Dim guid As String = GetGuidForAppointment(appointment)
If String.IsNullOrEmpty(guid) Then
SetGuidForAppointment(appointment)
guid = GetGuidForAppointment(appointment)
End If
appointmentGuid.Add(guid)
'Upsert rows
...
Next
'Delete orphaned rows
Using sqlConnection As New SqlConnection(ConnectionString)
Dim deleteScript As New StringBuilder()
Using sqlCmd As New SqlCommand("SELECT ID FROM Appointments", sqlConnection)
Using sqlDataReader As SqlDataReader = sqlCmd.ExecuteReader()
sqlConnection.Open()
While sqlDataReader.Read()
Dim guid As String = sqlDataReader.GetString(0)
If Not appointmentGuid.Contains(guid) Then
deleteScript.AppendFormat("DELETE FROM Appointments WHERE ID = '{0}'; ", guid)
End If
End While
End Using
End Using
If deleteScript.Length > 0 Then
Using sqlCmd As New SqlCommand(deleteScript.ToString(), sqlConnection)
sqlCmd.ExecuteNonQuery()
End Using
End If
End Using
덕분에, 난 정말 – markus
또 다른 옵션은 교환이 무엇을 당신이 약속 데이터를 비교하고 EWS에 존재하지 않는 행을 삭제하는 것입니다 - D가 끊어졌습니다. 성능은 끔찍합니다. – Brent