Dynamics CRM SDK に xRM が追加されて LINQ を使ったアクセスなどができるようになりました。
これを使うと非常に簡単に Dynamics CRM にアクセスできるようになったのですが、Update する際に StatusCode が変更できない問題にあたりました。
0x80048408 : 2 is not a valid status code for state code AccountState.Active on account.
まだ xRM のドキュメントが少なく、ステータスをアップデートする方法を探し、以下の方法で StatusCode / StateCode を更新できることがわかりました。
context.UsingService(service =>
{
var request = new Microsoft.Crm.SdkTypeProxy.SetStateAccountRequest()
{
AccountState = Microsoft.Crm.SdkTypeProxy.AccountState.Inactive,
AccountStatus = 1 + (int)Microsoft.Crm.SdkTypeProxy.AccountState.Inactive,
EntityId = entity.accountid
};
service.Execute(request);
}
);
もはや xRM の影がないのですが、べたべたな方法なもののこれでアップデート可能でした。