0

アカウントエンティティの関連するすべての連絡先の電話番号を更新しようとしています。以下は私が使用したコードです、

public class Plugin:IPlugin
{
    public void Execute(IServiceProvider serviceProvider)
    {
        IPluginExecutionContext context = (IPluginExecutionContext)
        serviceProvider.GetService(typeof(IPluginExecutionContext));

        Entity entity;


        if (context.InputParameters.Contains("Target") &&
        context.InputParameters["Target"] is Entity)
        {

            entity = (Entity)context.InputParameters["Target"];

            if (entity.LogicalName != "account") { return; }
        }
        else
        {
            return;
        }

        try
        {
            string telephoneNum = string.Empty;
            IOrganizationServiceFactory serviceFactory =(IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service =serviceFactory.CreateOrganizationService(context.UserId);

            var id = (Guid)context.OutputParameters["id"];
            telephoneNum = entity.GetAttributeValue<string>("telephone1");
            UpdateContact(service, id,telephoneNum);
        }
        catch (FaultException<OrganizationServiceFault> ex)
        {
            throw new InvalidPluginExecutionException(
            "An error occurred in the plug-in.", ex);
        }
    }

    private static void UpdateContact(IOrganizationService service, Guid id,string telephoneNUm)
    {
        using (var crm = new XrmServiceContext(service))
        {

            var res = from c in crm.CreateQuery("contact")
                      where c["parentcustomerid"].Equals(id)
                      select c;

            foreach (var c in res)
            {
                Entity e = (Entity)c;
                e["telephone1"] = telephoneNUm;
                crm.UpdateObject(e);
            }


            crm.SaveChanges();
        }
    }
}

更新時にプラグインを登録し、プライマリエンティティ「アカウント」を登録しましたが、電話フィールドの番号を変更した後にアカウントフォームを保存しようとすると、エラーポップアップが表示されます。私は何かが足りないのですか?皆さん、ありがとうございました!

4

1 に答える 1

0

ただの予感..しかし、私はあなたが間違った方法でIDを取得していると思います..それを取得してみてください:

Guid Id = context.PrimaryEntityId

しかし、Pedroが提案したように、正確なエラーを確認するか、attachtoprocessを使用してプラグインをデバッグする必要があります。

于 2013-03-20T23:13:56.500 に答える