2012-08-14 3 views
1

의 정렬 나는 메뉴를 정렬 할 때 =>업데이트 : jQuery를

이 메뉴 마우스에서 정렬 :

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

이벤트가 저장됩니다 =>하는 이벤트를 계속 동시에 두 테이블의 위치.

나는이 문제를 해결할 수있는 방아쇠를 사용합니다. 그러나 두 테이블의 구조가 다릅니다. 그래서, 나는 이것을 위해 Trigger를 사용할 수 없다.

이제 삽입/업데이트는 두 개의 테이블처럼 보입니다.

:

  Order 
      2 
      1 
      3 

표 2 :

  Order: 213 

I 업데이트 할 수있는 방법/동시에 두 개 이상의 테이블에 삽입합니다.

TKS 많은

이 두 테이블에 업데이트에 대한 정렬의 이벤트이지만 업데이트가 그것은 단지 테이블에 삽입

  //-------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); 

표 같다 : 항목은, 그 시간에 항목에서 데이터를 얻을 수 없습니다 newOrders 테이블을 업데이트합니다. 정렬은 항상 연결로 열립니다.

도와주세요.

+0

어떤 코드를 지금 사용 하시겠습니까 ?? 귀하의 의견에 –

답변

0

이것은 단지 추측이지만, NewOrders에는 기본 키가 설정되지 않은 것처럼 보입니다. 사용자 이름별로 주문을 선택할 수는 있지만 기본 키가 없으면 LINQ-to-SQL은 호출시 레코드를 찾는 방법을 모릅니다.

또한 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(); 
+0

tks! NewOrders의 PK가 설립되었습니다. – aloha

+0

이벤트 정렬로 인해 Connection이 닫힐 수 없습니다. 따라서 동시에 두 테이블을 업데이트 할 수없는 것 같습니다. 두 번째 테이블은 table1에서 데이터를 가져옵니다. 이 문제를 해결하기 위해 나에게 다른 방법을 추측 할 수 있습니다. 많이. ! – aloha

+0

친구 ... 나는 방금 해냈어. :). – aloha

관련 문제