- PR -

TableAdapterのUpdateのキー追加

1
投稿者投稿内容
てぃろ
常連さん
会議室デビュー日: 2007/07/01
投稿数: 23
投稿日時: 2008-04-28 12:18
こんにちわ、てぃろと申します。
いつも参考にさせていただいております。

どうか以下の件についてご存知の方いらっしゃいましたらご教授ください。

XP pro
C# 2005
SQLSERVER2005

まずテーブルアダプタを T_テーブルA をウィザードで追加しております。
[T_テーブルA]の主キーが[テーブルA_ID]のひとつとします。
[T_テーブルA]のレコードを取得(Select)するために、条件が複雑なので、
partialクラスを作成して、任意のレコードを取得してきています。

問題はUpdateなのですが、今回は楽観的排他を行おうとしております。
方法はごく普通に、[T_テーブルA]には[更新日時]というカラムがあり、
Updateする際に作業中の更新日時と、DB上の更新日時を比較しようとしています。

テーブルアダプタを作成した時に自動生成でUpdate文のには以下のような主キーを比較するクエリは作成されます。
UPDATE … SET … WHERE [テーブルA_ID] = @Original_テーブルA_ID)

ここに
AND ([更新日時] = @Original_更新日時)
のような文を追加したいのです。
また、変数「@Original_更新日時」も別のところで設定してあげなければいけないのですが、どのようにしたらよいのでしょうか?
partualクラスにUpdate文を別に作らないといけないのでしょうか?

以上、長文となってしまい申し訳ありませんが、どうかよろしくお願いいたします。
indigo-x
大ベテラン
会議室デビュー日: 2008/02/21
投稿数: 207
お住まい・勤務地: 太陽の塔近く
投稿日時: 2008-04-28 20:51
2度と自動生成しないのであれば
 TableAdapterのUpdateCommandのParametersに
 パラメータを追加(編集)しメソッドも手で直せばよいのでは
自動生成する可能性があるのであれば
 partialで突っ込むしかないのでは。。。。
てぃろ
常連さん
会議室デビュー日: 2007/07/01
投稿数: 23
投稿日時: 2008-04-29 11:48
てぃろです。
indigo-xさん、ご回答ありがとうございます。

「二度と自動生成しない」条件というのは、
自動生成される部分に手作業でコードを書けばよいが、
再生成するとその部分が損失してしまう。ってことですよね。
二度と自動生成しないとはいいきれないですね・・・。
やはり、indigo-xさんのおっしゃるとおりpartialクラスしかないのでしょうかねぇ。
でもこれもpartialクラスをテーブル別に作成するとなると
ファイル数も多くなってしまいますよね。
TableAdapterの使いに勝手にすこし疑問がでてくるのは私だけでしょうか・・?

参考になりました!いろいろ検討してみます。
このままいくとpartialになりそうです(´_`)
ありがとうございました。
1

スキルアップ/キャリアアップ(JOB@IT)