单值扩展 属性 为空 - MS Graph SDK

Single-Value Extended Property is null - MS Graph SDK

我希望将隐藏数据保存到 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。

你不想这样做

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

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

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

I then get a NULL on Single-Value Extended Property. Any help would be highly appreciated.

要检索上述扩展 属性 您需要在请求中指定它(请注意为什么使用特定的 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 当您有多个属性时,它可以避免很多丑陋的地方一起工作。