2013-07-14 3 views
1

사용자 지정 확장 속성을 사용하여 데이터베이스에 넣을 고유 한 약속을 만들고 싶습니다.EWS 관리 API 2.0을 사용하여 기존 약속에 대한 사용자 지정 확장 속성 바인딩

if (appointment.ExtendedProperties.Count <= 0) 
: 부동산 확장하지 않는 모든 약속에 대한

foreach (var appointment in appointments) 

: 내가 foreach 루프를 사용하여 모든 약속 물마루 갈 것보다

var appointments = _service.FindAppointments(WellKnownFolderName.Calendar, calendarView); 

과 : 나는 FindAppointments()를 사용하여 모든 약속을 찾을 수

나는 사용자 정의 확장 속성을 바인딩하고 그 값을 uniqe int :

으로 생성 한 고유 회의 ID (meetingId)로 설정합니다.
var myPropertySetId = new Guid("{6C3A094F-C2AB-4D1B-BF3E-80D39BC79BD3}"); 
var extendedPropertyDefinition = new ExtendedPropertyDefinition(myPropertySetId, "RateTheMeetingId", MapiPropertyType.Integer); 
var bindedAppointment = Appointment.Bind(_service, appointment.Id, new PropertySet(extendedPropertyDefinition)); 
bindedAppointment.SetExtendedProperty(extendedPropertyDefinition, meetingId); 
bindedAppointment.Update(ConflictResolutionMode.AlwaysOverwrite); 

하지만 회의를 검색하여 출력 확장 속성을 시도하고 값을 얻지 못해 결과가 나타나지 않습니다. 바인드되지 않았습니다. 내 질문에 내가 뭘 잘못하고 어떤 다른 해결책을 당신이 기존의 약속 사용자 지정 확장 속성을 제공 할 수있는 제안 할 수 있습니까? 그건 그렇고, 메신저 Exchange 서버 2010_SP2와 함께 일하고 있습니다.

답변

4

이 게시물에서 내 대답보기 : Exchange Webservice Managed API - Find items by extended properties 나는이 문제가 꽤 simular하다고 생각합니다. "FindItems"메서드는 사용자 지정 속성을로드하지 않습니다. 그 이유는

if (appointment.ExtendedProperties.Count <= 0) 

입니다. 이유는 약속에 이미 사용자 지정 속성이있는 경우에도 마찬가지입니다. 다음은 자체 GUID를 만드는 대신 DefaultExtendedPropertySet.PublicStrings에서 확장 속성을 만드는 것이 좋습니다. 나는 자신의 가이드도 시도해 보았고 정확하지도 않았다.

은 다음과 같이 그것을 시도 :

ExtendedPropertyDefinition def = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "RateTheMeetingId", MapiPropertyType.Integer); 

그래서 결국 코드는 다음과 같아야합니다

var appointments = _service.FindAppointments(WellKnownFolderName.Calendar, calendarView); 

ExtendedPropertyDefinition def = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.PublicStrings, "RateTheMeetingId", MapiPropertyType.Integer); 

PropertySet propset = new PropertySet(PropertySet.IdOnly); 
propset.Add(def); 

foreach (var appointment in appointments) 
{ 
    //appointment should already be binded, now load it 
    appointment.Load(propset); 
    object value = null; 
    if (item.TryGetProperty(def, out value)) 
    { 
     //Do something 
    } 
    else 
    { 
     //Add Property 
    } 
} 
+0

대단히 감사합니다! 내 애플 리케이션에서 내 가장 큰 문제를 해결 :) – Erikas