单值扩展 属性 为空 - 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 当您有多个属性时,它可以避免很多丑陋的地方一起工作。
我希望将隐藏数据保存到 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 当您有多个属性时,它可以避免很多丑陋的地方一起工作。