1

0x80040237重複キーを挿入できません。

CrmServiceを介してMSCRM4.0のインポートルーチンを作成しようとしています。これはこの時点まで成功しています。最初は、CRMにレコードの主キーを生成させていました。しかし、私のクライアントは、カスタムエンティティのキ​​ーを事前定義された値に設定する機能を望んでいました。これにより、インストーラーによって作成されたデータと、インストール後に作成されたデータを知ることができる可能性があります。

CrmService.Update()メソッドを呼び出すときにGUIDを設定できることを確認するためにテストしました。その結果、レコードが目的の値で作成されたことが示されました。インポートを実行しましたが、すべて成功したようです。インポートファイルの検証コードを変更する際に、(crmブラウザインターフェイスを介して)データを削除し、再インポートを試みました。残念ながら、現在はスローされ、重複キーエラーが発生します。

このエラーがスローされるのはなぜですか?Crmインターフェイスはレコードを削除しますか、それともまだ存在していますがユーザーの目には見えませんか?削除されたレコードが完全に削除され、GUIDが無料になるようにする方法はありますか?ライブ環境では、これらのGuidは存在しなかったでしょうが、私の開発中に、これらのインポートを成功させる必要があります。

ちなみに、私がこの問題を抱えていることを考えると、これは、静的にGUIDを設定することが推奨される方法ではないことを意味しますか?

4

3 に答える 3

6

私が知る限り、エンティティはソフト削除されているため、データベースからエンティティを削除しない限り、そのGuidを再利用することはできません。

たとえば、LeadBaseテーブルには、DeletionStateCodeというフィールドがあります。値0は、レコードが削除されていないことを意味します。

値2は、レコードを削除対象としてマークします。テーブルからこれらのレコードを物理的に削除するために2(?)時間ごとに実行される削除サービスがあります。

于 2009-07-02T07:16:47.850 に答える
1

Zahirは正しいと思います。削除サービスを実行して、再試行してください。ここにいくつかの情報があります:http://blogs.msdn.com/crm/archive/2006/10/24/purging-old-instances-of-workflow-in-microsoft-crm.aspx

于 2009-07-02T11:33:58.003 に答える
0

Zahirは正しいです。

レコードをインポートして削除した後、このツールで選択したときに削除サービスを開始できます。これにより、インポートと再インポートのテストが容易になります。

于 2009-07-02T12:51:23.090 に答える