XRM ツールを使用してデータを更新

Microsoft Dataverse でデータを更新するために、CrmServiceClient クラスには、UpdateEntity(String, String, Guid, Dictionary<String,CrmDataTypeWrapper>, String, Boolean, Guid)UpdateStateAndStatusForEntity(String, Guid, String, String, Guid) の 2 つのメソッドが用意されています。

同様に ServiceClient クラスには UpdateEntityUpdateStateAndStatusForEntity のメソッドがあります。

XRM ツール API を使用し更新操作にはデータ ペイロードが必要です。 データ ペイロードは、Dictionary<string, CrmDataTypeWrapper> オブジェクトの形式を取ります。 CrmDataTypeWrapper を使用して、参照するデータ ポイントに対してどのような処理を適用する必要があるか、インターフェイスに通知します。

UpdateEntity

これは、レコードのステータスや状態の設定を除いて、Dataverse でレコードを更新するための anchor メソッドです。 これを使用するには、更新するテーブルのスキーマ名、更新するテーブルの主キー フィールド、更新するレコードの GUID、最後に更新するデータ ペイロード配列を知っている必要があります。

CrmServiceClient svc = new CrmServiceClient(connectionstring);  
  
// Verify that you are connected  
if (svc != null && svc.IsReady)  
{ 
   // Update the account record  
    Dictionary<string, CrmDataTypeWrapper> updateData = new Dictionary<string, CrmDataTypeWrapper>();  
    updateData.Add("name", new CrmDataTypeWrapper("Updated Sample Account Name", CrmFieldType.String));  
    updateData.Add("address1_city", new CrmDataTypeWrapper("Boston", CrmFieldType.String));  
    updateData.Add("telephone1", new CrmDataTypeWrapper("555-0161", CrmFieldType.String));   
    bool updateAccountStatus = svc.UpdateEntity("account","accountid",_accountId,updateData);  
  
    // Validate if the account record was updated successfully, and then display the updated information  
    if (updateAccountStatus == true)  
    {  
        Console.WriteLine("Updated the account details as follows:");  
        Dictionary<string, object> data = svc.GetEntityDataById("account", accountId, null);  
        foreach (var pair in data)  
        {  
            if ((pair.Key == "name") || (pair.Key == "address1_city") || (pair.Key == "telephone1"))  
            {  
                Console.WriteLine(pair.Key.ToUpper() + ": " + pair.Value);  
            }  
        }  
    }  
}  
else  
{  
    // Display the last error.  
    Console.WriteLine("An error occurred: {0}", svc.LastCrmError);  
  
    // Display the last exception message if any.  
    Console.WriteLine(svc.LastCrmException.Message);  
    Console.WriteLine(svc.LastCrmException.Source);  
    Console.WriteLine(svc.LastCrmException.StackTrace);  
  
    return;  
}  

UpdateStateAndStatusForEntity

このメソッドは、Dataverse でレコードの状態を設定するために使用します。 たとえば、通常、すべてのレコードは "オープン" 状態で起動されます。 状態の名前は、レコードの種類に基づいて、もしくは開発者の選択によって変更されます。 たとえば、見積もりは、下書きアクティブクローズ失注受注という複数の状態とステータスをとります。

テーブルの状態を更新するには、名前または ID のいずれかによって、ターゲットの状態とステータスを知っておく必要があります。 名前と ID はどちらも、テーブルの定義をクエリし、ステータス フィールドと状態フィールドを調べることで見つけることができます。 この例では、取引先企業レコードのステータスを非アクティブに設定する方法を示します。

CrmServiceClient svc = new CrmServiceClient(connectionstring);  
  
// Verify that you are connected  
if (svc != null && svc.IsReady)  
{   
    // Here are the state and status code values  
    // statecode = 1 ( Inactive )   
    // statuscode = 2 ( Inactive )   
  
    svc.UpdateStateAndStatusForEntity("account" , accountId , 1 , 2 );  
  
    // the same command using the second form of the method  
    svc.UpdateStateAndStatusForEntity("account" , accountId , "Inactive" , "Inactive");  
}  
else  
{  
    // Display the last error.  
    Console.WriteLine("An error occurred: {0}", svc.LastCrmError);  
  
    // Display the last exception message if any.  
    Console.WriteLine(svc.LastCrmException.Message);  
    Console.WriteLine(svc.LastCrmException.Source);  
    Console.WriteLine(svc.LastCrmException.StackTrace);  
  
    return;  
}  
  

参照

XRM ツールを使用して Dataverse に接続する
XRM ツール API を使用して Dataverse でアクションを実行

注意

ドキュメントの言語設定についてお聞かせください。 簡単な調査を行います。 (この調査は英語です)

この調査には約 7 分かかります。 個人データは収集されません (プライバシー ステートメント)。