3

JQuery.Sortable()関数を使用して、次のような並べ替え可能なアイテムのリストを作成しています。

 <script type="text/javascript">
    // When the document is ready set up our sortable with it's inherant function(s)
    $(document).ready(function() {
        $("#goal-list").sortable({
            handle: '.handle',
            placeholder: 'ui-state-highlight',
            update: function() {
                var order = $('#goal-list').sortable('serialize');
                $("#info").load("/goals/process?" + order);
            }
        });
    });
</script>

返される結果は、アイテムIDのコンマ区切りリストです(つまり、1、2、3、4、5、6など)。

これを関連アイテムテーブルのsortorder列にコミットするための最良の方法を知りたいのですが...各レコードをループして更新することはできますが、データベースへの書き込みが非常に多く、ボトルネックになる可能性があると考えています。特にリストがかなり大きい場合。

LINQ-to-SQLとASP.NETMVCを使用しています

4

1 に答える 1

3

LINQ to SQL を使用している場合は、遅延実行について詳しく調べることをお勧めします。これは、特に関連付けを使用する場合によくある落とし穴です。

複数の挿入と更新は、実際にはグループ化できます。それらは、データベース コンテキストで SaveChanges または SubmitChanges が呼び出されるまで、データベースに書き込まれません。

アイテムのセットをループして変更する場合..ループを終了した後に SaveChanges を呼び出すと、更新ステートメントのグループがまとめられ、1 回のトリップでデータベースに送信されます..

于 2009-02-22T07:04:56.993 に答える