C#でデータセットを使う。世の中にはLINQという便利な物があるらしいが、古風にデータセットを使い、馬鹿を見た。
データセットをウィザードで作成するのは、凄く簡単。
だけど、顧客が「あれも入れて」と言い始めると、データベースのスキーマの変更。
スキーマの変更にあわせて、データセットも変更。
hogeDataSet.xsdをVisual Studioで開くと、ダイアグラムが表示される。
該当するテーブルの上で右クリックし、環境設定(Configure)をひらいて、変更する。
これが、くせ者中のくせ者。
VS2013を使っているが、VS2005からのバグが引き継がれているのでご注意あれ。
そのバグとは、ConnectionStringが見つからない、というバグだ。
これは、WebAppを作ってる方、WinFormsやってる方、どちらにもあり得る話だ。
Configureを開く、または、Add, Relationあたりを、いじろうとしても、
The connection string could not be found in application settings, or the data provider associated with the connection string could not be loaded
unable to find connection 'hogeCon' for object settings
アプリケーション自体は動作するが、何が何だか分からないが、読み込めないらしい。
namespace.Properties.Settingsを参照する、そこにConStrはある。
さらに、ソリューションのプロパティーを開いて、確認するも、ちゃんと入っている。
ネットで調べると、よくあるバグだとか。
データセットを入れ直す、という邪道な直し方もあるが、それも面倒だったりする。
他にあるのが、.xsdをノートパッドなどで開き、XMLとして中身をちょっと書き換える。
よくあるバグが、<Connections> </Connections>の間に複数の<Connection>エレメントが入っているだそうだ。
接続先のデータベースが一つなら、二つは要らないので、1個を消す。そうすると直る。
あいにく、私の場合は一つしかない。
もうひとつあるのが、<DataSource DefaultConnectionIndex="0".....> のIndexの値0が1になっている事があるそうだ。
これを、0に戻すと直るそうだ。
ほかにもあるのが、イベントログを消したら直ったという人もいた。
また、セーフモードで起動し、RTBackUpフォルダーの権限をアドミンにすると直ったという人も居た。
どれも駄目だった。
私は困った。
が、幸いにも直せた。
やり方は曖昧だ。突然なおったのだ。
ここで、そのときの手順を説明しよう。
バックアップを取ってから、xsdをいじった。
ノートパッドで<Connections> </Connections>の中の<Connection>を消す。
VSのダイアグラムが、表示されているところで、Configureをクリックしウィザードを開く。
不思議なもので、読み込めない場合はエラーだが、存在しない場合は、ウィザードをご丁寧に開いてくれた。
ウィザードをすすめていく。データベースを選び、接続する呪文をセーブし、取り込むものを決めて、終了をクリック。
すると、エラー!ConnectionStringが見つからないよ!って、おいいいいい。
ウィザードで設定したばっかでしょwwww
なんだこれ、と。
次に、ソリューションのプロパティーから、保存されているConnectionStringを消す。
ノートパッドで<Connections> </Connections>の中の<Connection>を消す。(この作業がしたかは、不明だが、<Connections> </Connections>内に<Connection>がないことは確かだった。)
そう、ここで、私、何を思ったかF5(スタート)を押したんです。
やっちゃったと、思いましたよ。
もちろん、エラーでCall Stackが表示されます。
VSのダイアグラムが、表示されているところで、Configureをクリックしウィザードを開く。
不思議なもので、読み込めない場合はエラーだが、存在しない場合は、ウィザードをご丁寧に開いてくれた。
ウィザードをすすめていく。データベースを選び、接続する呪文をセーブし、取り込むものを決めて、終了をクリック。
何事もなかったように、出来ました・・・・
次に、別のエラーが発生。
hogeDataSetが、フォームで認識されてない。
プログラム自体は動く。が、フォームの編集出来ない。
Solution ExploreでhogeDataSet.xsdを右クリック、Run Custom Tool(日本語のVS使ってないので、ごめんなさい、該当する日本語がわかりません。)
こうすると、再認識してくれて、復活。
開発ツールのバグってなんだかね。
VSは素晴らしいけど、やっぱね。
|
2016年1月13日水曜日
データセットの構造変更
登録:
コメントの投稿 (Atom)
0 件のコメント:
コメントを投稿