我使用.SyncFolderItems
从EWS复制。但是,这不包括重复系列中的虚拟项目。所以我想要除了为特定范围渲染日历视图以获取所有这些虚拟项目。
如果我使用
CalendarView cView = new CalendarView(start, end, 1000);
FindItemsResults<Appointment> findAppointmentResults = calendar.FindAppointments(cView);
EWS是否会返回此范围内的所有约会,包括来自定期系列的虚拟约会?或者我是否必须采用描述here的方式并手动枚举所有项目?
答案 0 :(得分:0)
对于那些会遇到同样情况的人。我尝试过并且已经成功地渲染了两种类型的约会。
EWS API日历视图会自动为您呈现定期系列。
有趣的是如何设置一种方法,以便在系列被删除时复制并更新数据库。
SyncFolderItems
AppointmentType
(Single,ReccuringMaster,Occurrence,Exception)。Id.UniqueId
同时存储cleanGlobalObjectId
!怎么弄它:
var cleanGlobalObjectId = new ExtendedPropertyDefinition(DefaultExtendedPropertySet.Meeting, 0x23, MapiPropertyType.Binary);
var psPropSet = new PropertySet(BasePropertySet.FirstClassProperties) { cleanGlobalObjectId };
object calIdVal;
ewsAppointment.TryGetProperty(cleanGlobalObjectId, out calIdVal);
var syncId = Convert.ToBase64String((byte[])calIdVal);
要删除数据库中的所有约会,您可以使用{3}来获取所有约会。示例:如果用户删除了syncId
。删除引用它的所有行。
同步约会后,您可以呈现特定范围的视图,以将这些虚拟约会复制到数据库中。最简单的方法是删除所有RecurringMaster
并再次插入所有内容。
syncId
希望这有帮助。