【ASP.netMVC】結合段階でスキーマ変える?馬鹿でしょ。

プロパーが無知な場合

プロパーにASP.netMVCの経験者がまるでいないで採用するって言うのはどういうものなんだろう?

単体テストが終了し、結合テストに入る段階で、DBのテーブルにスキーマがついていることを知る。

サーバーDBに繋がるけど、何か変!?

単体テストまでローカルDBに接続していたわけで、そこではスキーマなんて気にすることなく、「dbo」だったわけです。

そして、作成されたサーバーDBにも「dbo」もあり、スキーマ付きのテーブルもあるわけで。

だから、接続はするんですよね。テストとしてデータがあったりするから。

それでも、いざ保存をしようとすると・・・変な現象が。

「データがない?」

画面のデータをPOSTで渡しながらもDBに存在確認をするのだけど、リスト表示しているはずのデータが出てこない!?

どういうこと?

私もまるで知らない状態から5ヶ月、一人の経験者の派遣の方の作ったものをパクる形でやっていただけで、なぜだかまるで想像できず。

その一人の経験者は当初の予定通り、単体テスト終了時(10月末)で契約は終わりなのはわかっていたから、早めに「結合テストをしてくださいね」と要請していたものの、結局、プロパーがスキーマのことを伝えてきたのが10月30日。

スキーマがついていたけど、それがどんな影響があるのかその人も知らず、テーブルを作ればいいだけだからと結局、気づいたのは31日の16時を過ぎた頃だった。

Entity Frameworkでの開発という言葉すら知らない私。

そしてそれがCode Firstで行われているということも書いてあるけど、手順的にどうすればできるくらいにしか覚えてなかった。

そのうち、出てきたメッセージが「Migrationを検討せよ」だった。

「え?どういうこと?」

他の言語だとMVCだとコードの中でテーブルも作成して、都度migrationをするってことをしていたけど、今回はDBから既存のテーブルを使用しているんだけど・・・

自動マイグレーションもFalseにしているわけで。

でも、そうするのか?

まぁスキーマが関係する場所ってどこ?と思ったら、Code FirstでDBからModelを作る時に、スキーマを選択していた。

まぁ「dbo」しかなければスキーマを選択しているなんて気にはならない。

「dbo」の時には特に必要ないみたいなんだけど、classの前に

[Table("スキーマ.テーブル名")]

ってしなきゃいけないらしい。まぁだから、してないModelは普通に「dbo」のスキーマのテーブルを見に行くわけで。

SQL文をガシガシ書いているものは該当するテーブルに取得に行くのだけど、LINQクエリを使うとないのはそうだよね。だって「dbo」を指定しているんだもん。

ってことは理解したのだけど、じゃあどうしたらいいの?がかなり長い時間試行錯誤するに至った。

Code FirstでModelを作り直しても「マイグレーションを検討せよ」と出るから。

まぁどのタイミングでどうしたらいいのかって言うのがなかなか検索しきれなかったから、ほんと焦ってた。

新しくプロジェクトを作成して、イチから設定をし直してみたりしてもだめだった。

何が問題なのかわかってないわけで。

11月1日、経験者なしで朝から試行錯誤した私に16時になってやっと光明が!

いろんなサイトを見て、試行錯誤を繰り返していた時に見つけた「__MigrationHistory」という言葉。

なんか見たことがある。

ASP.netMVCは以前2つのプロジェクトで使用をしていて、まぁ開発って立場じゃなかったから、まるでコーディングを知る由もなかったのだけど、春先に結合テストの時にそんな言葉を見たような・・・

DBの「dbo」スキーマの一番上になぜか「dbo.__MigrationHistory」という作った記憶もないテーブルが。

レコードを見ると、自分のシステムから起因しているように思える。

まずはリネームをして、起動してみる。

!!!

動いた。その頃にはログインでメッセージが出てたから、これでどうにかなるかも。

何をしてdboにテーブルが作成されたのかがわからず、テーブルの数も半端ないとまるで気づけない。

これで次回はどうにかできるのだろうけど、忘れるかもしれないな。

ご自分から発信することがなかった経験者の方に依存をしてきたツケをこれから感じるのだろうけど(愚直にベース部分の作成をしてくれたのだけど、使い方がわからない部分が多数あるわけで)まぁ私もそこまで自分の無知を責めることもないなと。

だって、何事も後手後手のプロパーで危機管理もないわ、こちらが想定してご対応を依頼してもしてくれないわけで。

要らない時間だったと思う。

知っていれば。

スキーマを結合段階で変更するなんてことをしてしまう前にしっかりと使うシステムについて少なくとも作り方をレクチャー受けておくべきだったんじゃないのか?と。

私もあと2ヶ月で終わる。

客先テストまでは多分、いない。

この2ヶ月でどこまで進化させられるのか?

結合テスト仕様書もなく、きちんとした設計書も出来てない状態で、自分でテストをして自分で修正をするらしい。

それってテストになるの?

そんな現場になってしまってもそれでもすごい濃密な経験にはなったので良しとするのだけどね。