7

मैं किसी अन्य कैलेंडर प्रोग्राम के साथ एक्सचेंज कनेक्ट करने के लिए एक ईयूएस-एप्लिकेशन लिखने वाला हूं। मुझे क्या हुआ, मुझे कैसे पता चलेगा, विनिमय पर कौन सी अपॉइंटमेंट हटा दी गई है? क्या बताने का कोई तरीका है? मैं इसे एपीआई और दस्तावेज़ीकरण में नहीं मिला।एक्सचेंज वेब सेवा प्रबंधित, हटाए गए अपॉइंटमेंट

अग्रिम धन्यवाद।

उत्तर

6

कैसे एक उपयोगकर्ता एक नियुक्ति (या किसी भी आइटम) को हटा देता है के आधार पर, अलग अलग बातें किया जाता है:

  • मुलायम हटाएँ: आइटम मेलबॉक्स के रीसायकल बिन में ले जाया जाता है।
  • हार्ड-हटाएं: आइटम तुरंत हटा दिया गया है।

    • क्वेरी फ़ोल्डर एक FindItems कॉल का उपयोग करके और ItemView की Traversal संपत्ति में ItemTraversal.Associated का चयन करें:

    आप हटाए गए आइटम के बारे में जानकारी प्राप्त करने के लिए कई तरीके हैं। नोट: इसके लिए एक्सचेंज 2010 की आवश्यकता है।

  • एक बार में SyncFolderItems का उपयोग करें और सिंक्रनाइज़ेशन कुकी कहीं और स्टोर करें। बाद में, पहले संग्रहीत कुकी का उपयोग करके सिंकफ़ोल्डर इटम्स को दोबारा निष्पादित करें। एक्सचेंज अब आपको फ़ोल्डर में हुए बदलावों की एक विस्तृत सूची देगा।
  • नियुक्तियों के लिए रीसायकल बिन पूछें। वे संभवतः उपयोगकर्ता के डिफ़ॉल्ट कैलेंडर से आएंगे।
+0

उत्तर के लिए धन्यवाद, मैं वास्तव में वहाँ खो गया था :-D – markus

+0

एक अन्य विकल्प क्या विनिमय है पर नियुक्ति के डेटा से अपने आप की तुलना करने और पंक्तियों को EWS में मौजूद नहीं है हटाना है। हालांकि उस के लिए प्रदर्शन भयानक है। – Brent

0

मैंने एक ऐसी सेवा लिखी जो एक एसक्यूएल तालिका में ईडब्ल्यूएस कैलेंडर नियुक्तियों को सिंक करता है।

यदि डेटाबेस में कोई पंक्ति है और ईडब्ल्यूएस में नहीं है तो परिवर्तनों को सम्मिलित करने/अपडेट करने के बाद हटाने के लिए मैं इसे हटा दूंगा, क्योंकि इसका मतलब है कि इसे एक्सचेंज में हटा दिया गया था। मैं डेटाबेस और विनिमय में नियुक्ति को ट्रैक करने के लिए 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 
संबंधित मुद्दे