2016-07-12 18 views
4

私は自分の問題を解決するのに役立つリソースを見つけようとしていましたが、私の頭を包み込むのはやや難しい問題です。Entity Frameworkを使用したASP.net MVCデータベースレコードの並べ替え

私は整数列フィールド(増分)を持つDB(100レコード)のテーブルを持っているとします。今度は、ユーザーが項目を下から中央にドラッグできるリストを並べ替える機能があります(例:シーケンス100 - > 50)。

私はそのレコードシーケンスを50に設定し、その後のすべてのレコードはそのシーケンスに対して1+で更新されます。 (例えば、50は51になり、51は52になります)。

これは、シーケンスを変更するためだけに50レコードを更新する必要があり、特にテーブルのサイズが大きくなると時間がかかることがあるため、非効率的です。

各レコードの更新を必要としない並べ替えを効率的に行う方法はありますか?

+1

ユーザーインターフェイスの並べ替えにドラッグアンドドロップすることは、更新する行が多すぎるという点でも使用できるとは思わないので、大きな問題ではないと思います。 –

答えて

1

これは、ユーザーが何をしているのかを50レコード更新しているという問題がある理由はわかりません。また、テーブルが成長した場合、コンピュータがそれを扱うことができない場合、どのようにUIの多くのアイテムを並べ替えることができるかもしれません。

エンティティ自体が重く、番号を変更する必要がある場合は、ストアドプロシージャを作成するか、この特定の操作のためにEF経由で未処理のSQLを実行できます。

1

すると、テーブルにあなたが(49 + 50)に100〜50セットこの「注文」値をドラッグするとdecimalタイプで、デフォルト値は1〜100

ある「注文」と呼ばれる新しい列を与えます/ 2は元の100が49と50の間になるので、並べ替えには 'order'を使います。

0

リンクされたリスト構造に基づいて要素を注文することができます。

レコードIDを追加し、順序IDの代わりに次のレコードIDを使用します。

これは、反対側からも同様の問題を示します。あなたはあなたの要素の順序を決定するために各レコードを見なければなりません。

ベストプラクティスは、他のすべてのレコードを更新することです。

関連する問題