2011-03-14 32 views
2

我期待为我的创建插件的实体“帐户”设计一些逻辑。如何使用Dynamics CRM 2011中的插件识别重复记录

它的功能基本上是检查帐户名称和标识创建时重复的帐户名称。

所以,如果有一个帐户名称,巴克莱例如,我尝试再次创建这个我要提醒用户一个错误消息,这已创建之前,并防止添加此记录。

public void Execute(IServiceProvider serviceProvider) 
{ 
    var context = (IPluginExecutionContext)serviceProvider.GetService(typeof(Microsoft.Xrm.Sdk.IPluginExecutionContext)); 

    if (context.InputParameters.Contains("Target") && 
     context.InputParameters["Target"] is Entity) 
    { 
     // Obtain the target entity from the input parmameters. 
     Entity entity = (Entity)context.InputParameters["Target"]; 

     if (entity.LogicalName == "account") 
     { 
     bool x = true; 

     if (entity.Attributes.Contains("Name") != recordNamesinCRM) 
     {      
     } 
     else 
     { 
      throw new InvalidPluginExecutionException("You Cannot Have Duplicate Country Codes!."); 
     }   
     } 
    } 
} 

在上面的代码我只是用“recordNamesinCRM”作为一个例子,但我敢肯定有一个内置的功能或比较上与系统或方法的其余部分创建一个新名称的方式计算重复出现的实例。

+0

您是否找到了解决方案?最后,我正在寻找基于联系人实体中唯一的电子邮件地址字段进行类似的操作 – Andrew 2011-11-30 22:20:12

回答

0

您是否知道内置的重复检测?

参见以下链接:

虽然链接描述动态CRM 4的重复检测,它们仍然是有效的动态CRM 2011

查看Dynamics CRM 2011 SDK中的文章Run Duplicate Detection

您既可以使用可选参数SuppressDuplicateDetection,也可以使用RetrieveDuplicatesRequest,但这只适用于现有记录。

1

您可以使用RetrieveDuplicatesRequest按这里这个例子:

/// <summary> 
    /// Checks for duplicate Guid 
    /// </summary> 
    /// <param name="account"></param> 
    /// <returns>First duplicate account id, if any duplicates found, and Guid.Empty if not</returns> 
    public Guid DuplicateExists(Account account) 
    { 
     RetrieveDuplicatesRequest request = new RetrieveDuplicatesRequest(); 
     request.BusinessEntity = account; 
     request.MatchingEntityName = Account.EntityLogicalName; 
     request.PagingInfo = new PagingInfo(); 
     request.PagingInfo.PageNumber = 1; 
     request.PagingInfo.Count = 1; 

     RetrieveDuplicatesResponse response = (RetrieveDuplicatesResponse)ServiceProxy.Execute(request); 
     return response.DuplicateCollection.Entities.Count > 0 ? response.DuplicateCollection.Entities[0].Id : Guid.Empty; 
    } 

为例见http://crm-edinburgh.com/2011/08/crm-sdk-using-detect-duplicates-settings-in-code/