作成したエンティティ(とデータベース)の内容を一覧で表示してみよう。Create(作成)、Read(参照)、Update(更新)、Delete(削除)のような基本的なデータベース操作を実装するだけならば、一からコードを書き起こす必要はない。MVCにはスキャフォールディング(Scaffolding)と呼ばれる機能が用意されているからだ。スキャフォールディングとは「骨組み」「足場」という意味で、アプリケーションの定型的なコードの骨組みを自動生成する機能のこと。スキャフォールディング機能でまず基本のコードを生成し、必要な部分を修正する、という手順を採れば、劇的に開発の負荷を軽減できるだろう*1。Update以前のスキャフォールディング機能はコントローラをまず作成し、その後、個別にテンプレートを生成していくという、やや回りくどいものであった。Updateでコントローラからテンプレートまでの生成を一気に行ってくれるように改められている。スキャフォールディング機能を利用するには、ソリューション・エクスプローラから/Controllersフォルダを右クリックし、コンテキスト・メニューから[追加]−[Controller]を選択する。Controller]ダイアログを前回のそれとも比較しておこう。変化したことが見て取れるはずだ。Name](コントローラ名)は「BooksController」としておこう。命名規約ではないが、コントローラ名は操作するリソース(テーブル)に準じて命名しておくのが望ましい。Options]グループである。[Template]は、コントローラの作成に利用するテンプレートを決めるもので、以下の中から選択できる。スキャフォールディング機能については、拙稿「スキャフォールディング機能で軽々DB連携アプリケーション」も参照いただきたい)。class]で、使用するモデル・クラスとコンテキスト・クラス、また、[Views]で使用するビュー・エンジンを指定しておく必要がある。本稿では、図3のように、作成済みのBookおよびMyMvcContextクラスを指定する。context>」を選択することで、モデル・クラスから自動生成も可能だ。[Add]ボタンをクリックすると、コントローラとビュー・スクリプトとが生成される。たくさんのコードが自動生成されるが、今回はその中でも一覧表にかかわるIndexアクションと、対応するIndex.cshtml/Index.vbhtmlファイルとに注目してみよう。Booksテーブルの内容を一覧表示するためのIndexアクション(上:BooksController.cs、下:BooksController.vb)ここでは、コンテキスト・クラス経由でBooksテーブルのすべてのレコードを取得している。Frameworkにおけるクエリと更新」を参照いただくとして、ここで注目していただきたいのは、取り出した結果(モデル)をViewメソッドに引き渡している点だ。リスト8のようにすることで、ビューにオブジェクトを引き渡すことができる。この構文は、モデルと連携したアクションではよく利用するものなので、ここできちんと押さえておきたいところだ。/インデントなどを修正している)。これによって、以降はModelプロパティで、特にキャストなどの手続きを意識することなくモデルにアクセスできるようになるわけだ。部分ではModel(IEnumerable<MvcApp.Models.Book>オブジェクト)から順にBookエンティティを取り出し、その内容を順に出力している。Eachブロックの中で利用しているDisplayForメソッドは、渡されたプロパティの型に従って、モデルの値を表示するためのビュー・ヘルパーだ。Eachブロックの一時変数)。以上の内容を確認できたら、サンプルを実行してみよう。デバッグ実行でブラウザを起動し、以下のようなアドレスを入力してほしい(ポート番号は環境によって異なる)。http://localhost:10720/Books/Index冒頭の図2のような結果が表示されれば、サンプルは正しく動作している。イニシャライザによってMyMvc.sdfデータベースが自動生成されていることも確認しておこう。(すべてのファイルを表示)を有効にしておく必要がある。以下の図は、MyMvc.sdfをダブルクリックし、サーバ・エクスプローラからデータベースの内容を確認したものだ*3。Studioをいったん再起動してほしい。4.0」がインストールされる。Booksテーブルと1:nの関係で関連付いているReviewsテーブルでは、暗黙的に「モデル名_主キー名」(ここではBook_Isbn)という名前で外部キー列ができている点にも注目だ。Frameworkコード・ファーストの命名規約の1つである。サーバ・エクスプローラからデータベース・ファイル(MyMvc.sdf)を開いた場合、コンテキスト・メニューから[切断]を選び、接続を切っておくこと。ないと、以降のデバッグ実行で例外が発生する可能性がある。Frameworkコード・ファーストと連携したモデル開発について解説した。MVCそのものにはModelの機能はほとんど含まれない。MVCの本質とは、Controller+Viewなのだ。今後、学習を進めていく中でも、まずはそのことを念頭に置いておくと、学習のポイントを絞りやすいだろう。次回も引き続きデータベース連携の話題だ。今度は、データベースに対して入力値を投入する方法を確認するとともに、検証機能について解説する。7で追加された新機能の中から、「数値リテラル構文の改善」と「ローカル関数」を紹介する。TranslatorはPowerPoint用のアドイン。