将序列化JQuery可排序结果提交到数据库的最佳方法是什么?

时间:2009-02-22 04:49:49

标签: asp.net-mvc linq-to-sql jquery-ui

我正在使用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.NET MVC

1 个答案:

答案 0 :(得分:3)

如果您正在使用LINQ to SQL,我建议您更多地研究延迟执行。这可能是一个常见的陷阱......尤其是在使用关联时。

实际上可以将多个插入和更新组合在一起..在db上下文中调用SaveChanges或SubmitChanges之前,它们不会写入db。

如果你遍历一组项目并修改它们..然后在退出循环后调用SaveChanges,应该将一组更新语句一起批处理并一次性发送到数据库..