Я использую MetadataService для создания 4-х сущностей и создания отношений между ними.
Сущности: TrexCalendar
, TrexFrom
, TrexTo
, TrexAddress
отношения (все 1: многие): TrexFrom - TrexAddress
, TrexCalendar - TrexFrom
, TrexTo - TrexAddress
, TrexCalendar - TrexTo
Когда я запускаю свой код, все сущности создаются успешно, и первое, второе и четвертое отношенияуспешно создан.
Не удается создать третье отношение со следующими сведениями:
0x80047007 Объект: new_trexaddress связан с объектом с идентификатором: 7a6af338-bc23-e011-ad8c-9f5d300a22fe.Невозможно создать другое родительское отношение с Entity: платформа new_trexto
7a6af338-bc23-e011-ad8c-9f5d300a22fe - это идентификатор для сущности TrexFrom
.
Так что это похоже на SDKне позволит мне создать отношение 1: N между TrexTo
и TrexAddress
, потому что существует отношение 1: N между TrexFrom
и TrexAddress
.
Что странно, так это то, что я могусоздайте это отношение вручную с помощью веб-интерфейса Dynamics.
Есть идеи, что может произойти?Как я могу создать оба отношения программно?
Я использую следующий код для создания отношений:
OneToManyMetadata relationship = new OneToManyMetadata
{
ReferencedEntity = "new_trexto",
ReferencingEntity = "new_trexaddress"
SchemaName = "new_trexto_trexaddress",
AssociatedMenuBehavior = new CrmAssociatedMenuBehavior { Value = AssociatedMenuBehavior.UseCollectionName },
CascadeAssign = new CrmCascadeType { Value = CascadeType.NoCascade },
CascadeDelete = new CrmCascadeType { Value = CascadeType.RemoveLink },
CascadeMerge = new CrmCascadeType { Value = CascadeType.NoCascade },
CascadeReparent = new CrmCascadeType { Value = CascadeType.NoCascade },
CascadeShare = new CrmCascadeType { Value = CascadeType.UserOwned },
CascadeUnshare = new CrmCascadeType { Value = CascadeType.NoCascade }
};
LookupAttributeMetadata lookup = new LookupAttributeMetadata
{
SchemaName = lookupName,
RequiredLevel = new CrmAttributeRequiredLevel(AttributeRequiredLevel.Recommended),
DisplayName = CrmServiceUtility.CreateSingleLabel("TrexTo - TrexAddress", 1033)
};
CreateOneToManyRequest request = new CreateOneToManyRequest
{
OneToManyRelationship = relationship,
Lookup = lookup
};
try
{
metadataService.Execute(request);
Debug.Print("Relationship created successfully");
}
catch (System.Web.Services.Protocols.SoapException ex)
{
Debug.Print(ex.Detail.InnerText);
}