1

情報を受信し、MS Dynamics CRM にマップする必要がある Web サービスを実装しています。

したがって、OptionSet 値の設定に関しては、CRM を実装したのは私ではないため、どのようなインデックスが設定されているかわかりません。私が知っているのはラベルだけです。当然、私のサービスを利用する人もそうです。たとえば、Opportunity を 10033004 や 10033005 ではなく、Warm または Cold と呼びます。ただし、Opportunity エンティティにこの値を設定する必要があります。

私はこのリンクを見つけましたが、それは本当にやり過ぎだと思います。それが OptionSet にアクセスできる唯一の方法である場合、それはただ悲しいことです。

4

1 に答える 1

1

ここにいくつかのオプションがあります。

  1. あなたのリンクなどのメタデータ サービスを使用します。これは少しやり過ぎのように感じますが、複数のサービス呼び出しのオーバーヘッドを削減するためにキャッシュを追加できます。実行時に値がどうなるか本当にわからない場合は、おそらくこれが最善の方法です。
  2. ハードコーディングするだけです。コンパイル時に値が何であるかがわかっている場合は、これがおそらく最も速いオプションです。私はこれを以前にやったことがありますが、通常は問題ありません。ただし、誰かが CRM を変更すると、これは明らかに壊れます。
  3. 厳密に型指定されたクラスを使用してください。これは、システムが自動的に行うだけで、事実上ハード コーディングになります。ただし、CRM が変更された場合は、それらを再生成する必要があります。

したがって、これらのどれも完璧な選択肢ではないと思いますが、すべてうまく機能します。


編集

Re: オプション 3; ここで説明されている事前バインドされたエンティティを意味します: http://msdn.microsoft.com/en-us/library/gg328210.aspx。この状況で彼らがどれだけ助けてくれるかわかりません。これらは、エンティティ クラスの代わりに使用される強い型のクラスです。例: entity["firstname"] の代わりに contact.firstname。それらをメタデータの形式として使用できると思いますが、自分で試したことはありません。また、オプション 2 と同じ問題があります。CRM が変更された場合、更新してからコンパイルする必要があります。

この場合、オプション 1 に向かい、メタデータ サービスにクエリを実行します。一度これを実行し、プロセスの開始時に結果をキャッシュすると、常に最新の情報が得られます。この例は、システムhttp://msdn.microsoft.com/en-us/library/jj603008内のすべてのメタデータを取得する方法を示しています。

于 2012-09-01T10:44:29.153 に答える