通过 servicenameid 获取日历规则

get calendarrules by servicenameid

在 Dynamics 365(本地)中,我需要删除与特定服务关联的服务限制。看起来它们存储在 "calendarrules" 中,但是当我尝试在我的日历规则集合中查找一些信息时,我没有看到任何类似于 "ServiceNameId" 的属性。 我发现这可以简单地通过更改日历规则的条目并更新原始日历来完成,所以我尝试按如下方式进行,但看不到将我引向服务的属性。

我得到的合集如下:

SystemUser user = service.Retrieve(SystemUser.EntityLogicalName, UserId, new ColumnSet("calendarid")).ToEntity<SystemUser>();
            Calendar userCalendar = service.Retrieve(Calendar.EntityLogicalName, user.CalendarId.Id, new ColumnSet(true)).ToEntity<Calendar>();

            EntityCollection entityCollection = (EntityCollection)userCalendar.Attributes["calendarrules"];

好的,可以在 innercalendars 上找到并通过这种方式更新:

SystemUser user = service.Retrieve(SystemUser.EntityLogicalName, serviceappointment.OwnerId.Id, new ColumnSet("calendarid")).ToEntity<SystemUser>();
                    Calendar userCalendar = service.Retrieve(Calendar.EntityLogicalName, user.CalendarId.Id, new ColumnSet(true)).ToEntity<Calendar>();

                    EntityCollection entityCollection = (EntityCollection)userCalendar.Attributes["calendarrules"];
                    foreach (Entity ent in entityCollection.Entities)
                    {
                        int num = 0;
                        Entity newEntity = service.Retrieve("calendar", ((EntityReference)ent.Attributes["innercalendarid"]).Id, new ColumnSet(true));

                        EntityCollection calendarRules = (EntityCollection)newEntity.Attributes["calendarrules"];

                        List<int> list = new List<int>();

                        foreach (CalendarRule cr in calendarRules.Entities)
                        {
                            if (cr.ServiceId != null)
                            {
                                list.Add(num);
                            }
                            num++;
                        }

                        for (int i = 0; i < list.Count; i++)
                        {
                            calendarRules.Entities.Remove(calendarRules.Entities[list[i]]);
                        }
                        newEntity.Attributes["calendarrules"] = calendarRules;
                        service.Update(newEntity);

                    }

也许有更简单的方法,但现在这就足够了