Microsoft.CrmSdk アセンブリを使用して Dynamics 365 for Customer Engagement (バージョン 9) でエンティティを生成すると、CrmServiceClient のメソッド GetEntityMetadata がエンティティから最新の情報を取得しないことがわかりました。
表示するコードは次のとおりです。
using (var svc = new CrmServiceClient(strConn))
{
EntityMetadata em = svc.GetEntityMetadata(PREFIX + TABLE_NAME_D, EntityFilters.Attributes);
if (em == null)
{
Console.WriteLine($"Create entity [{PREFIX + TABLE_NAME_D}]");
CreateEntityRequest createRequest = new CreateEntityRequest
{
Entity = new EntityMetadata
{
SchemaName = PREFIX + TABLE_NAME_D,
LogicalName = PREFIX + TABLE_NAME_D,
DisplayName = new Label(TABLE_LABEL, 1036),
DisplayCollectionName = new Label(TABLE_LABEL_P, 1036),
OwnershipType = OwnershipTypes.UserOwned,
},
PrimaryAttribute = new StringAttributeMetadata
{
SchemaName = PREFIX + "name",
MaxLength = 30,
FormatName = StringFormatName.Text,
DisplayName = new Label("Residence", 1036),
}
};
CreateEntityResponse resp = (CreateEntityResponse)svc.Execute(createRequest);
em = svc.GetEntityMetadata(PREFIX + TABLE_NAME_D, EntityFilters.All);
// At this point, em is null!!!
}
}
createResponse を受け取った後、エンティティは Dynamics で適切に作成されていますが、直後に呼び出された GetEntityMetadata はまだ null のままです。数秒待ってから別の電話をかけると、応答は正しくなります。しかし、それは恐ろしいです!応答の更新を「強制」する方法はありますか? ありがとう。