MetadataServiceを使用して4つのエンティティを作成し、それらの間にリレーションシップを作成しています。エンティティのN:1リレーションシップを複数作成するとエラーが発生する
エンティティは以下のとおりです。TrexCalendar
、TrexFrom
、TrexTo
、TrexAddress
関係(全て1:多くは)あり:TrexFrom - TrexAddress
、TrexCalendar - TrexFrom
、TrexTo - TrexAddress
、TrexCalendar - TrexTo
私は私のコードを実行すると、エンティティがすべて作成されます第1、第2、第4の関係が正常に作成されます。
第三の関係は、以下の詳細で失敗作成:
0x80047007エンティティ: 7a6af338-BC23-E011-ad8c-9f5d300a22fe:new_trexaddressはIDを持つエンティティに親です。エンティティと別の親の 関係を作成できません:new_trextoプラットフォームを
7a6af338-BC23-E011-ad8c-9f5d300a22feはTrexFrom
エンティティのIDです。 1理由TrexTo
とTrexAddress
間のN関係:
は、だから、私は1を作成することはできませんSDKのように見えるNの関係はTrexFrom
とTrexAddress
の間に存在します。奇妙な何
は、私はダイナミクスWebインタフェースを使用して手動でこの関係を作成することができるだということです。
何が起こっている可能性がありますか?プログラムで両方の関係を作成するにはどうすればよいですか?
私は関係を作成するには、次のコードを使用しています:両方の関係が「親」として設定されている
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);
}
としてそれらのいずれかを設定する必要があります私は、カスケード値のいずれかを設定するコード行を省略することで、これを動作させることができました。 – dlarkin77