当我排序菜单时:=>保持事件:从鼠标=>排序
菜单:
Home(1) News(2) About(3) => News(2) Home(1) About(3)
事件会同时将位置保存到两个表格。
我知道使用Trigger可以解决这个问题。但是两个表的结构不同。所以,我不能使用Trigger。
现在,我想插入/更新将看起来像两个表。
table1:
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);
它只插入表:Items,而不是从那时的Items获取数据来更新表:NewOrders。 连接始终打开以进行排序。
请帮帮我。
答案 0 :(得分:0)
这只是一个猜测,但好像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();