0

我是 CRM 新手,正在尝试编写插件。

它应该很简单,但事实并非如此。

由于某种原因,我无法检索实体。我确定它存在于数据库中并且 ID 是正确的。

下面的代码......

有谁知道为什么它不起作用?谢谢

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using Microsoft.Xrm.Sdk;
using System.ServiceModel;
using Microsoft.Xrm.Sdk.Query;
using System.Collections;

namespace Copy_field
{
    public class Copy_field : IPlugin
    {
        /// <summary>
        /// A plugin copyies fields from Contact Entity to Case Entity. This allows display
        /// information about the client on case Entity and change it directly from Case Entity 
        /// </summary>
        /// <remarks>Register this plug-in on the Create case, update case and update of contact
        /// </remarks>
        /// 

        public void Execute(IServiceProvider serviceProvider)
        {
            IPluginExecutionContext context = (IPluginExecutionContext) serviceProvider.GetService(typeof(IPluginExecutionContext));

            ITracingService tracer = (ITracingService)serviceProvider.GetService(typeof(ITracingService));
            IOrganizationServiceFactory serviceFactory = (IOrganizationServiceFactory)serviceProvider.GetService(typeof(IOrganizationServiceFactory));
            IOrganizationService service = serviceFactory.CreateOrganizationService(context.UserId);

            Entity entity;

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

                entity = (Entity)context.InputParameters["Target"];
                if (entity.LogicalName != "incident") { return; } 
            }
            else
            {
                return;
            }
        //    tracer.Trace("1. THIS IS an/a: " + entity.LogicalName);
          //  tracer.Trace("2. Id: " + entity.Id);
   //         tracer.Trace("2.2 output parametersId: " + context.OutputParameters["id"].ToString());

            // if record exists - retrieve the entity

            ///////////////////////////////////////////////////////////////////
        ColumnSet cols = new ColumnSet(true);
        Entity yahhooo = service.Retrieve(entity.LogicalName, entity.Id, cols);


        }
    }
}
4

2 回答 2

1

不要忘记在更新消息中,您只能访问您更新(更改)它的文件...您可以按照以下方法编写来跟踪您的代码(逐行)

  public static void LogFile(string log)
    {
        try
        {
            TextWriter tw = new StreamWriter(@"C:\Inetpub\wwwroot\inventorylog_" + Guid.NewGuid() + ".txt");
            tw.Write(log);
            tw.Close();
        }
        catch
        {
        }
    }

成功的

于 2014-02-26T11:50:38.460 回答
0

好吧,你可以给我们更多关于它的信息,比如它会抛出任何异常吗?我的猜测是您收到以下错误:“数据库中不存在 ID 为“yourentityid”的“yourentity”,如果是这样,您可能正在尝试检索在 Pre-Operation 管道上创建的记录。无论如何,请帮助我们帮助您向我们提供更多信息。

于 2014-02-13T10:45:59.617 回答