单值扩展属性 - MS Graph SDK

时间:2017-09-27 08:25:07

标签: c# api graph office365

我希望将隐藏数据保存到Outlook 365事件中。这就是我目前正在做的事情。

                        SingleValueLegacyExtendedProperty singleEP1 = new SingleValueLegacyExtendedProperty
                    {
                        Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "PlanningID",
                        Value = appointment.PlanningId.ToString() == null ? "0" : appointment.PlanningId.ToString()
                    };

                    SingleValueLegacyExtendedProperty singleEP2 = new SingleValueLegacyExtendedProperty
                    {
                        Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "CustomerName",
                        Value = appointment.CustomerName.ToString() == null ? "" : appointment.CustomerName.ToString()
                    };

                    SingleValueLegacyExtendedProperty singleEP3 = new SingleValueLegacyExtendedProperty
                    {
                        Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "ProjectName",
                        Value = appointment.ProjectName.ToString() == null ? "" : appointment.ProjectName.ToString()
                    };

                    SingleValueLegacyExtendedProperty singleEP4 = new SingleValueLegacyExtendedProperty
                    {
                        Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "PresentationName",
                        Value = appointment.PrestationName.ToString() == null ? "" : appointment.PrestationName.ToString()
                    };

当我使用通话获取所有日历项目时:

            ICalendarCalendarViewCollectionPage retrievedEvents = await graphClient
                                                                    .Me
                                                                    .Calendars["Calendar"]
                                                                    .CalendarView
                                                                    .Request(options)
                                                                    .GetAsync();

然后我在单值扩展属性上获得NULL。任何帮助都将受到高度赞赏。

1 个答案:

答案 0 :(得分:1)

你不想这样做

 Id = "String " + "{" + Guid.NewGuid() + "} " + "Name " + "PlanningID",

使用Guid.NewGuid()只会在Exchange中生成一个随机扩展属性,如果你做得足够会导致扩展属性耗尽。您在此处使用的GUID很重要,因为您需要在要检索该属性时指定它。因此,选择一个GUID并在要为应用程序设置的每个属性中使用它,例如

Id =“String”+“{66f5a359-4659-4830-9070-00049ec6ac6e}”+“Name”+“PlanningID”,

  
    

然后我在单值扩展属性上获得NULL。任何帮助都将受到高度赞赏。

  

要检索上述扩展属性,您需要在请求中指定它(请注意为什么使用特定GUID很重要)例如

  ICalendarCalendarViewCollectionPage retrievedEvents = await graphserviceClient
                 .Me
                 .Calendars["Calendar"]
                 .CalendarView
                 .Request(options)
                 .Expand("SingleValueExtendedProperties($filter=Id eq 'String {66f5a359-4659-4830-9070-00049ec6ac6e} Name PlanningID')")
                 .GetAsync();

但是,除非您尝试使用MAPI或EWS与旧应用程序进行交互,否则对于此类自定义数据更好的想法是开放式扩展https://developer.microsoft.com/en-us/graph/docs/api-reference/v1.0/resources/opentypeextension,当您有多个要使用的属性时,这会避免很多丑陋