XRM ツールを使用してデータを更新
Microsoft Dataverse でデータを更新するために、CrmServiceClient クラスには、UpdateEntity(String, String, Guid, Dictionary<String,CrmDataTypeWrapper>, String, Boolean, Guid) と UpdateStateAndStatusForEntity(String, Guid, String, String, Guid) の 2 つのメソッドが用意されています。
同様に ServiceClient クラスには UpdateEntity や UpdateStateAndStatusForEntity のメソッドがあります。
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 分かかります。 個人データは収集されません (プライバシー ステートメント)。