1

メニューを並べ替えるとき:=>イベントを保持:マウスからの並べ替え=>

メニュー:

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

イベントは同時に 2 つのテーブルに位置を保存します。

Trigger を使用すると、この問題を解決できることがわかっています。ただし、2 つのテーブルの構造は異なります。したがって、これにはトリガーを使用できません。

さて、挿入/更新が2つのテーブルのようになります。

表1:

          Order
           2
           1
           3

テーブル 2:

           Order: 213

上記の 2 つのテーブルを同時に更新/挿入するにはどうすればよいですか。

どうも

これは2つのテーブルへの更新のためのソートのイベントですが、テーブル1への更新のようです

            //-------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 を更新します。並べ替えのために接続が常に開かれています。

私を助けてください。

4

1 に答える 1

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();
于 2012-08-14T17:36:14.873 に答える