3

コンテキストから返されたレコードをロックする方法が必要なのか、単に新しいアプローチが必要なのか、よくわかりません。

これが話です。現在、CRM と統合する少数のアプリがあります。それらの一部は XrmServiceContext を開き、更新を実行するために数千のレコードを返します。これらのスクリプトは途中で SaveChanges を呼び出しますが、コンテキストがそれらを返した後、数分後に保存されるアカウントがまだ最後近くにあります。この間にユーザーがレコードを更新すると、その変更はスクリプトによって上書きされます。

コンテキストが更新を保存するまでレコードをロックする方法はありますか、それとも私が取るべきより良いアプローチがありますか?

キット

4

3 に答える 3

5

私の意見では、このタイプのデータベーストランザクションの問題は、CRMが現在最も不足している問題です。他の誰かがあなたのデータを悪用しないようにする方法はありません。それは常にCRMの最後の1つの世界です。

そうは言っても、私の提案は、気になる属性のみを更新することです。エンティティのすべての列を返す場合、そのエンティティを更新すると、そのうちの1つだけを更新した場合でも、エンティティのすべての属性が更新される可能性があります。

システムを扱っている場合、最後の1勝の精神を容認できない場合は、CRMを使用しない方がよいでしょう。

アップデート1

CRM 2015 SP1以降は、オプティミスティックアップデートをサポートしています。これにより、バージョン番号を使用して、レコードを取得してから誰もレコードを更新していないことを確認できます。

于 2012-07-17T20:58:31.750 に答える
1

ここにはいくつかのオプションがありますが、何をしたいかによって異なります。ただし、まず第一に、これらの自動化されたプロセスの一部を時間外に移動できる場合は、それが最善の選択肢です.

別のオプションは、各レコードを 1000 以上ではなく 1 つずつ取得することです。

取得したレコードの一部のみを更新する場合は、更新が発生したかどうかを保存する前に確認することをお勧めします (変更日を比較します)。変更日が変更された場合は、1 回取得してから保存する必要があります。

于 2012-07-17T20:30:21.030 に答える
0

最初は、保留中の操作を示すフィールドまたはステータスを作成し、フォームの OnLoad イベントで JScript を使用してフォームを警告/ロックすることを考えました。処理が完了すると、フラグがクリアされる可能性があります。

于 2012-07-17T19:30:47.013 に答える