2

データベースに多数の貸し手が保存されています。貸主の数が少ないため、ルックアップを行うことなく簡単にデータをキャッシュできます。

ただし、顧客がローンを申し込むときは、毎回別の貸し手を論理的な順序で最初に検索したいと考えています。例えば:

貸し手 A 貸し手 B 貸し手 C

最初の顧客は、貸し手 A、2 番目の顧客 B、3 番目の顧客 C、4 番目の顧客 A を再び表示します。

これの背後にある理由は、貸し手の間でリードを均等に分配するためであり、カウンターが1日1回程度リセットされたとしても、それは世界の終わりではありません.

もちろん、この情報をデータベースに書き込むこともできますが、それはやり過ぎでしょうか? 他の誰かが似たようなものを実装し、より簡単な解決策を考え出す必要がありましたか?

アドバイスをいただければ幸いです。

4

6 に答える 6

4

貸し手が最後に選択された DateTime を含む追加の列を保存した場合、貸し手選択クエリを変更して、最も長い時間前に選択された貸し手を返すことができます。つまり、次のようなものです。Lenders.OrderBy(x => x.LastSelected).First()

もちろん、貸し手が選択されたときにデータベースに書き戻す必要もあります。これらすべてを 1 つの SQL クエリで実行した場合を除きます。このようなものが機能します(編集:検証済み-うまく機能します):

UPDATE MyTable
SET LastSelected = GetDate()
OUTPUT INSERTED.*
WHERE Id = (SELECT TOP (1) Id FROM MyTable ORDER BY LastSelected)
于 2013-05-16T19:26:39.493 に答える
2

後続の割り当てがランダムに行われるのではなく、決定した論理的な順序で行われるようにするために、以前の担当者をどこかに保存する必要があります。

したがって、基本的には、データベースに「AssignedTo」という列を作成し、割り当てごとにその列を確認してから、新しいリードを次の論理担当者に割り当てます。

于 2013-05-16T19:19:06.570 に答える
1

使用された貸主のリストを保持し、最初のリストに基づいてすべての貸主をフィルタリングして、まだ貸していない貸主のみを取得します。すべての貸主のリストが使用中の貸主と同じ場合は、それをクリアしてからやり直してください。次のようなlinqで簡単に実行できます。Where(x => !UsedLenders.Contains(x))

于 2013-05-16T19:25:43.583 に答える
1

それはやり過ぎです。

私はあなたの状況を認識していません (プログラムが使用される場所、データベースがどこにあるかなど...)。
この情報を保存するには、xml ファイルを使用する必要があります。1 日のクライアント数を指定して、常に最も優先度の高いクライアントを選択するといいでしょう。

<Lenders> 
   <LenderA Clients = "5", Priority = "1"> Jim </LenderA>
   <LenderB Clients = "4", Priority = "2"> Jim </LenderA>
   <LenderC Clients = "4", Priority = "3"> Jim </LenderA>
</Lenders>

この場合、プログラムは彼が選択できないことを知っています

  • LenderA は、より多くのクライアントを抱えているためです。
  • LenderC は、LenderB と同じ数のクライアントを持っていますが、優先度が低いためです。

XML を使用したことがない場合は、 XmlDocumentについて読んで、ドキュメントを宣言する方法と、目的のノードを取得するためのXPathを理解することをお勧めします。

于 2013-05-16T19:25:03.180 に答える
1

顧客の訪問のためにデータベースに挿入されたレコードがある場合は、そのレコードの ID を選択し、ID mod N に等しいゼロベースのインデックスを持つ貸し手を取得します。ここで、N は貸し手の数です。

この方法は、単純な広告ローテーターに使用されることがあります。ID 値は順次増分され、データの他のすべての変更から独立しているため、すべての貸し手が均等に訪問され、顧客が厳密にラウンド ロビンの順序で貸し手に送信されることが保証されます。

例外は、後でロールバックされるトランザクションの一部として ID 値がフェッチされる場合ですが、この単純なソリューションでは、ロールバックの数が通常ゼロに近いと想定しています。

于 2013-05-16T20:21:10.670 に答える