ソースコードから理解する技術-UnderSourceCode

手を動かす(プログラムを組む)ことで技術を理解するブログ

ASP.NET MVC 既存データベースでEFコードファーストを使用してみた

ASP.NET MVC 3 Tools UpdateによるEF コードファーストとデータスキャフォールディング
を参考として、タイトル通りのことをやってみました。

まずは、自分への備忘録も兼ねて、EFコードファースト、データスキャフォールディングについて
メモっておきます。

EFコードファーストでは、「コードファースト」の言葉通り、コードを用いてデータ構造を定義します。
データセットXMLなどは使いません。

ASP.NET MVC の場合はModelのコードでデータ構造を定義し、
・テーブルをクラスに
・カラムをプロパティに
・テーブル同士の関連をassociationプロパティに
それぞれ定義します。

また「スキャフォールド」(Scaffold)は「足場」を意味します。
要は、データ駆動開発における「足場」として用いることができる技術だと言えると思います。

既存のデータベースに接続する方法ですが、EFコードファーストでは
DBContextクラス名とWeb.config内の接続文字列名を同じにしておきます。

ASP.NET MVC 3 Tools UpdateによるEF コードファーストとデータスキャフォールディング
では、DBContextクラス名は「StoreContext」なので、接続文字列は以下のようにしました。

Web.config
f:id:UnderSourceCode:20130504102128j:plain
SQL ServerはWindows認証の場合です。塗りつぶしたところには、マシン名を入れてください。

・・・ちなみに、既存のテーブルのカラム名を、Modelのプロパティ名が違うと、以下のエラーとなります。
System.Data.EntityCommandExecutionException はユーザー コードによってハンドルされませんでした。
コマンド定義を実行中にエラーが発生しました。詳細については、内部例外を参照してください。

もう少し分かりやすい例外を出してくれてもいいのに・・・。