ページ

2011年3月25日金曜日

◆TableAdapterManager

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 件のコメント:

コメントを投稿

私が最近チェックした記事