Первое, что нужно проверить, это то, что в вашем пользовательском объекте включено обнаружение дубликатов на экране настройки объекта.Если этого не произойдет, включите его и опубликуйте объект, затем перейдите к этому коду из SDK.Этот код будет искать дубликат учетной записи на основе имени учетной записи.
// Set up the CRM service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
token.AuthenticationType = 0;
token.OrganizationName = "AdventureWorksCycle";
CrmService service = new CrmService();
service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Create the account instance and set the name property.
account acct = new account();
acct.name = "Microsoft";
// Create the request object.
RetrieveDuplicatesRequest Request = new RetrieveDuplicatesRequest();
Request.BusinessEntity = acct;
Request.MatchingEntityName = EntityName.account.ToString();
Request.PagingInfo = new PagingInfo();
// Execute the request.
RetrieveDuplicatesResponse Response =
(RetrieveDuplicatesResponse) Service.Execute(Request);
Если вы хотите использовать динамический объект с приведенным выше кодом, просто создайте экземпляр динамического объекта вместо строк, составляющих учетную запись,и установите для ReturnDynamicEntities значение true для объекта Request.Если вы искали способ начать поиск дубликатов во всей базе данных, а не спрашивать, является ли конкретная запись дубликатом, вот код:
// Set up the CRM Service.
CrmAuthenticationToken token = new CrmAuthenticationToken();
// You can use enums.cs from the SDK\Helpers folder to get the enumeration for Active Directory authentication.
token.AuthenticationType = 0;
token.OrganizationName = "AdventureWorksCycle";
CrmService service = new CrmService();
service.Url = "http://<servername>:<port>/mscrmservices/2007/crmservice.asmx";
service.CrmAuthenticationTokenValue = token;
service.Credentials = System.Net.CredentialCache.DefaultCredentials;
// Create a query expression for the bulk duplicate detection.
QueryExpression query = new QueryExpression();
query.EntityName = EntityName.account.ToString();
// Create the request (do not send an e-mail).
BulkDetectDuplicatesRequest request = new BulkDetectDuplicatesRequest();
request.JobName = "Detect Duplicate Accounts";
request.Query = query;
request.RecurrencePattern = string.Empty;
request.RecurrenceStartTime = new CrmDateTime();
request.RecurrenceStartTime.Value = DateTime.Now.ToString("s");
request.SendEmailNotification = false;
request.ToRecipients = new Guid[0];
request.CCRecipients = new Guid[0];
request.TemplateId = Guid.Empty;
// Execute the request.
BulkDetectDuplicatesResponse response = (BulkDetectDuplicatesResponse)service.Execute( request);
Guid jobId = response.JobId;
Это использует сообщение BulkDetectDyplicates.Это должно привести вас на правильный путь.