Quantcast
Channel: CRM Development 論壇
Viewing all articles
Browse latest Browse all 10280

Unexpected exception from plug-in (Execute): AutoNumber.Class1: System.Collections.Generic.KeyNotFoundException

$
0
0

hii,

i am new to ms crm. I want to auto generate a number in contact entity. On post-event plugin, following error occurs. Any help is welcome.

Unhandled Exception: System.ServiceModel.FaultException`1[[Microsoft.Xrm.Sdk.OrganizationServiceFault, Microsoft.Xrm.Sdk, Version=5.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35]]: Unexpected exception from plug-in (Execute): AutoNumber.Class1: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.Detail:
<OrganizationServiceFault xmlns:i">
  <ErrorCode>-2147220956</ErrorCode>
  <ErrorDetails xmlns:d2p1=" />
  <Message>Unexpected exception from plug-in (Execute): AutoNumber.Class1: System.Collections.Generic.KeyNotFoundException: The given key was not present in the dictionary.</Message>
  <Timestamp>2013-03-02T07:08:30.8652974Z</Timestamp>
  <InnerFault i:nil="true" />
  <TraceText>

[AutoNumber: AutoNumber.Class1]
[1d4afc70-0683-e211-9327-984be173a3b9: AutoNumber.Class1: Create of contact]

</TraceText>
</OrganizationServiceFault>

CODE:-

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
using Microsoft.Xrm.Sdk.Query;
using System.ServiceModel;
using System.Runtime.Serialization;
namespace AutoNumber
{
    public class Class1:IPlugin
    {

        public void Execute(IServiceProvider serviceProvider)
        {
            string generatednumber;
            IPluginExecutionContext context = (IPluginExecutionContext)serviceProvider.GetService(typeof(IPluginExecutionContext));
            if (context.InputParameters.Contains("Target") && context.InputParameters["Tareget"] is Entity)
            {
                Entity objcontact = (Entity)context.InputParameters["Target"];
                if (objcontact.LogicalName != "contact")
                    return;
                else
                {
                    try
                    {
                        IOrganizationServiceFactory servicefactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
                        IOrganizationService service = servicefactory.CreateOrganizationService(context.UserId);
                        var id = (Guid)context.OutputParameters["id"];
                        //Entity objautonumber= service.Retrieve("new_autonumbergeneration", new Guid(""),new Microsoft.Xrm.Sdk.Query.ColumnSet(new string[]{"new_name","new_Prefix","new_Number","new_Suffix"}));
                        //string name= objautonumber["new_name"].ToString();
                        //string prefix=objautonumber["new_Prefix"].ToString();
                        //string number=objautonumber["new_Number"].ToString();
                        //string suffix=objautonumber["new_Suffix"].ToString();
                        //string generated=prefix+"-"+number+"-"+suffix;
                        //objcontact["new_ContactNumber"].Equals(generated);
                        ConditionExpression condition = new ConditionExpression();
                        condition.AttributeName = "new_name";
                        condition.Operator = ConditionOperator.Equal;
                        condition.Values.Add("Prefix for account entity");
                        FilterExpression filter = new FilterExpression();
                        filter.Conditions.Add(condition);
                        QueryExpression query = new QueryExpression("new_autonumbergeneration");
                        query.ColumnSet.AddColumns("new_Prefix", "new_Number", "new_Suffix");
                        query.Criteria.AddFilter(filter);
                        EntityCollection result = service.RetrieveMultiple(query);
                        foreach (var a in result.Entities)
                        {
                            generatednumber = a.Attributes["new_Prefix"] + "-" + a.Attributes["new_Number"]+ "-" + a.Attributes["new_Suffix"];
                            objcontact.Attributes["new_ContactNumber"].Equals(generatednumber);
                        }
                    }
                    catch (FaultException<OrganizationServiceFault> ex)
                    {
                        throw new InvalidPluginExecutionException("The autogenerated number can't be generated by plug-in",ex);
                    }
                }
            }
        }
    }
}

Thanks in advance.


Viewing all articles
Browse latest Browse all 10280


<script src="https://jsc.adskeeper.com/r/s/rssing.com.1596347.js" async> </script>