【问题标题】:Update at the same time for 2 tables based on Keeping Event: Sorting of Jquery基于 Keeping Event: Sorting of Jquery 同时更新 2 个表
【发布时间】:2012-08-14 15:16:13
【问题描述】:

当我对菜单进行排序时:=> 保持事件:从鼠标排序 =>

菜单:

   Home(1)   News(2)    About(3)    =>    News(2)     Home(1)     About(3)

事件将位置同时保存到两个表中。

我知道使用触发器可以解决这个问题。但是两个表的结构不同。所以,我不能为此使用 Trigger。

现在,我希望插入/更新看起来像两个表。

表1:

          Order
           2
           1
           3

表2:

           Order: 213

如何同时更新/插入上述两个表。

非常感谢

这是更新两个表的排序事件,但似乎更新到 table1

            //-------Update for table: Items---------//
            command.Connection = connection;
            command.CommandText = "UpdateItemsOrder";
            command.CommandType = CommandType.StoredProcedure;
            SqlParameter paramUserName = new SqlParameter("@ItemOrder", SqlDbType.VarChar, 255);
            paramUserName.Value = itemOrder;
            command.Parameters.Add(paramUserName);
            //----Update for table: NewOrders(get data from column ItemOrder)--//
            string username = "aloha";
            DemoDataContext dc = new DemoDataContext();
            var strJoin= (from m in dc.Items
                             select m.ItemOrder);
            var result = string.Join("", strJoin.Select(x => x.Value).ToArray());
            var reUpdateOrder = dc.NewOrders.Single(a => a.UserOrder.Equals(username));
            reUpdateOrder.NewItemOrder = result;
            dc.SubmitChanges();
            connection.Open();
            return (command.ExecuteNonQuery() > 0);

它只插入到table:Items,而不是从Items中获取数据来更新table:NewOrders。 连接始终打开以进行排序。

请帮帮我。

【问题讨论】:

  • 你现在用什么代码来做这些??

标签: jquery asp.net sql linq


【解决方案1】:

这只是一个猜测,但看起来NewOrders 可能没有建立主键..?您可能可以通过用户名选择订单,但如果没有主键,LINQ-to-SQL 将不知道如何在调用 dc.SubmitChanges(); 时找到更新记录

另外,您是否有任何特殊原因让 SqlConnection 处于打开状态以进行排序?在某些情况下,这可能会导致线程问题,通常最好留给连接池处理。

SubmitChanges() 将打开它自己的连接,因此无需为它保持打开 SqlConnection。您应该分别处理每个更新:

//-------Update for table: Items---------//
using(SqlConnection conn = new SqlConnection(...))
{
    SqlCommand command = new SqlCommand();
    command.Connection = conn;
    command.CommandText = "UpdateItemsOrder";
    command.CommandType = CommandType.StoredProcedure;

    SqlParameter paramUserName = new SqlParameter("@ItemOrder", SqlDbType.VarChar, 255);
    paramUserName.Value = itemOrder;
    command.Parameters.Add(paramUserName);

    conn.Open();
    command.ExecuteNonQuery();
}

//----Update for table: NewOrders(get data from column ItemOrder)--//
string username = "aloha";
DemoDataContext dc = new DemoDataContext();
var strJoin = (from m in dc.Items
               select m.ItemOrder);

var result = string.Join("", strJoin.Select(x => x.Value).ToArray());
var reUpdateOrder = dc.NewOrders.Single(a => a.UserOrder.Equals(username));
reUpdateOrder.NewItemOrder = result;
dc.SubmitChanges();

【讨论】:

  • 感谢您的评论! NewOrders PK 成立。
  • 因为事件排序不允许关闭连接。因此,同时更新两个表似乎是不可能的。第二个表从 table1 获取数据。你可以猜到我用其他方法来解决这个问题。非常感谢。 !
猜你喜欢
  • 2012-07-04
  • 1970-01-01
  • 1970-01-01
  • 2013-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-12
相关资源
最近更新 更多