-1

データベース内のレコードを更新するために人々が使用するフォーム ビューがあります。ただし、最初はレコードが存在せず、すべてのフィールドにデフォルト値が表示されます。送信ボタンが初めてクリックされたときに、レコードがデータベースに作成されます。その後の送信では、既存のレコードを更新する必要があります。レコードは、Request.QueryString を介してページに渡される主キーによって識別されます。

ASP.net はこれを行う簡単な方法を提供していますか、それとも挿入/更新ロジックの独自の実装を展開する必要がありますか?

4

2 に答える 2

2
UPDATE dbo.table SET col = @col WHERE id = @id;

IF @@ROWCOUNT = 0
BEGIN
  INSERT dbo.table(id, col) SELECT @id, @col;
END

2008+でも使用できますMERGEが、構文は非常に困難です(そして、衝突の可能性からあなたを隔離することはできません)。

于 2012-07-02T16:25:54.893 に答える
2

値を読み取り、データ ソース/リポジトリに対して GET 要求を実行します。このキーのエンティティ/レコードが既に存在するかどうかを確認してください。はいの場合は Update メソッドを呼び出し、そうでない場合は Insert を呼び出します。

このようなもの

 //check the queystring param value is valid numeric expression 
//before trying to convert

 int itemId=Convert.ToInt32(Request.QueryString["itemId"]);

 var item=repo.GetItemById(itemId);
 if(item==null)
 {
   repo.InsertItem(item);
 }
 else
 {
    repo.UpdateItem();
 }

repoは、永続ストレージへのデータの更新/挿入を行う Insert および UupdateItem メソッドが存在するリポジトリ実装のオブジェクトであると仮定します。

于 2012-07-02T16:14:33.983 に答える