2016-05-17 5 views
3

こんにちはStackOverflowのコミュニティに設定された値と同じにする必要があり、のMicrosoft Dynamics CRM - エラーメッセージ: - プラグインやカスタムからのエンティティのエンティティIdはプロパティバッグ

私はちょうど「接触」のレコードをコピーしようワークフローアクティビティ 関連するコードは、残念ながら、私は「エンティティIdがプロパティバッグで設定した値と同じでなければなりません」常にエラーメッセージ

  QueryExpression qe = new QueryExpression("contact") 
      { 
       ColumnSet = new ColumnSet("firstname", "lastname") 
      }; 
      EntityCollection entityCollection = _organizationService.RetrieveMultiple(qe); 
      foreach (Entity entity in entityCollection.Entities) 
      { 
       entity.Id = Guid.NewGuid(); 

       if (!entity.Attributes.Contains("firstname")) 
       { 
        entity.Attributes.Add("firstname", ""); 
       } 
       entity["firstname"] = (entity.GetAttributeValue<string>("firstname") ?? "") + "(Copy)"; 

       _organizationService.Create(entity); 
      } 

取得しています。

私は

Entity.Id = Guid.NewGuid(); 

ラインを省略した場合、私はエラーに

を取得しています「重複するキーを挿入できません。」

Iはまた

byte [] bytes = new byte[16]; 
random.NextBytes(bytes); 
entity.Id = new Guid(bytes); 

又は

entity.Id = Guid.Empty; 

は、結果も

に「エンティティIdが値セットと同じでなければならないなど、新しいGUIDを作成するための様々な他の方法を試しプロパティバッグ内に "。

一方、この記事https://msdn.microsoft.com/en-us/library/jj602970.aspxの助けを借りてMicrosoft CRM 2016 Office 365システムに接続するデスクトップアプリケーションがあり、すべてのレコードをコピーできます。

ご協力いただきまして誠にありがとうございます。

+0

は、私はあなたが_organizationService.Create(エンティティ)に必要なように、更新を作成し、ためにプラグインを登録していないする必要があり、マイクロソフトダイナミックCRMのプラグインを作成すると思います。 。 –

答えて

6

QueryExpressionは、常に実際のEntity.IdとしてIDを返します。そのプロパティ名はcontactidです。それがエラーを起こす理由です。この属性を削除することもできますが、CRMから取得するものを更新するのではなく、常に新しいC#Contactオブジェクトを作成することをお勧めします。また、独自のGUIDを設定することは望ましくありません.CRMでは、索引付けと順序付けのために最適化された順次GUIDが使用されるためです。

QueryExpression qe = new QueryExpression("contact") 
{ 
    ColumnSet = new ColumnSet("firstname", "lastname") 
}; 

foreach (Entity entity in _organizationService.RetrieveMultiple(qe).Entities) 
{ 
    var copy = new Entity(); 
    copy["firstname'] = (entity.GetAttributeValue<string>("firstname") ?? "") + "(Copy)"; 
    _organizationService.Create(copy); 
} 
+0

ありがとうございました。その解決策は私のために働く。私はentity.Attributes.Remove(entity.LogicalName + "id")を最初に試みましたが、それは仕事をしませんでした。 – user172501

関連する問題