VisualStudio2008から?TableAdapterManagerなるコンポーネントが追加されて、それまで個々のテーブルアダプタ毎に更新する必要があった処理をUpdateAll()で一発実行出来るようになった。
なおかつ凄いことに、テーブル間の制約も理解して更新順序を良きに計らってくれるらしい。
う~ん、素晴らしい。
私のお手軽プログラミングスタイルにぴったりの機能だ。
早速NorthWindの「Orders」と「Order Detail」でマスター詳細パターンの更新を行ってみた。
っが、新規追加がエラーになる。
外部キー制約の例外だそうだ。
どうやら、「Orders」テーブルのOrderIDはIdentity列(AutoNumber自動付番)に成っているのだが、そこで付番された番号を「Order Detail」のOrderIDに読みなおしてInsertするという機能がバグっているっぽい。
試しに個々のTableadapterのUpdateメソッドを順に(当然Ordersから)実行するとうまくいく。
TableAdapterManagerは比較的シンプルなオブジェクトで特別な設定もなさげ。
調べていくと以下のようなバグ報告を見つけた。
Hierarchial update of Master/Child with autoincrement (identity) primary key on Master - not possible | Microsoft Connect
2008のころからバグってるの?
NorthWindにあるような標準的なパターンで動かないんじゃ使い物にならないじゃん(><)
0 件のコメント:
コメントを投稿