Pergunta

0x80040237 Não é possível inserir chave duplicada.

Eu estou tentando escrever uma rotina de importação para MSCRM4.0 através do CrmService. Este tem sido até bem sucedida até este ponto. Inicialmente eu estava apenas deixando CRM gerar as chaves primárias dos registros. Mas o meu cliente queria a capacidade de definir a chave de uma entidade de nosso costume valores predefinidos. Potencialmente, isso nos permite saber quais dados foi criado por nosso instalador, e que dados foi criado após a instalação.

I testados para garantir que as Guids pode ser definida quando a chamada do método CrmService.Update () e os resultados indicaram que os registos foram criados com os nossos valores desejados. Passei a importação e tudo parecia bem sucedido. Ao modificar meu código de validação dos arquivos de importação, eu deletei os dados (através da interface do navegador CRM) e tentou re-importação. Infelizmente agora ele lança e um erro de chave duplicada.

Porque é que este erro que está sendo jogado? Será que a interface CRM excluir o registro, ou será que ainda existem, mas escondido dos olhos do usuário? Existe uma maneira de garantir que um registro excluído é excluído permanentemente ea Guid torna-se livre? Em um ambiente vivo, estes Guids nunca teria existido, mas durante o meu desenvolvimento Eu preciso dessas importações para ser bem sucedido.

A propósito, considerando que eu estou tendo esta questão, isso implica que Guids configuração estaticamente não é uma prática recomendada?

Foi útil?

Solução

Até eu posso dizer entidades são soft-excluído por isso não seria possível reutilizar esse Guid a menos que você (ou o serviço supressão) excluída a entidade do banco de dados.

Por exemplo, na tabela de LeadBase você vai encontrar um campo chamado deletionstatecode, um valor de 0 implica o registro não foi excluído.

Um valor de 2 marcas o registro para exclusão. Há um serviço de eliminação que é executado a cada 2 (?) Horas para fisicamente excluir esses registros da tabela.

Outras dicas

Eu acho que Zahir é certo, tente executar o serviço de eliminação e tente novamente. Há algumas informações aqui: http://blogs.msdn.com/crm/archive/2006/10/24/purging-old-instances-of-workflow-in-microsoft-crm.aspx

Zahir está correto.

Depois de importar e excluir os registros, você pode lançar o serviço de eliminação de cada vez que você escolher com esta ferramenta . Isso tornará mais fácil às importações de teste e reimportação.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top