<目次>
(1) Entity Frameworkのコードファーストとデータベースファーストの特徴や違いについて
(1-1) データベースファースト
(1-2) コードファースト
(1-3) どちらが推奨されるか?
(1) Entity Frameworkのコードファーストとデータベースファーストの特徴や違いについて
「コードファースト」と「データベースファースト」はそれぞれEntity Frameworkを使用した開発の方式(Entity Frameworkの使用方法)の事です。当記事では両者の特徴や違いについてみていきます。
(1-1) データベースファースト
「データベースファースト」は旧来の伝統的な方式で次のような流れで行います。
・①最初にデータベース/テーブル設計をする
↓
・②Entity Frameworkがデータベース/ドメイン対応するドメインクラス(テーブル・カラムを表すクラス)を作成
(図111)
>目次にもどる
(1-2) コードファースト
一方で「コードファースト」はEntity Framework 4.1から新しく登場した技術で、データベースファーストとは逆方向の順番で生成する方法です。
・①最初にドメインクラス(テーブル・カラムを表すクラス)を作成する
↓
・②Entity Frameworkがドメインクラスに対応するデータベース/テーブルを自動で作成(EF APIが処理を担当)
(図121)
(備考)「まっさら」でなくても使用可能
「コードファースト」は一見すると「まっさら」な状態のDB(テーブルが1つもない)の時しか使用できないようにも感じますが、そういった事もなく既存の古いDBがある状態でも使用する事が可能です。
(1-3) どちらが推奨されるか?
絶対の正解はありませんが以下のようなメリットを優先したい場合には「コードファースト」が推奨される事が多いようです。
●開発スピードが上がる
「コードファースト」のアプローチは「テーブル設計」が不要となり、代わりにドメインクラスを実装(C#やVB.NETなど)しますが、そちらの方が従来のデザイナーツールによるテーブル作成よりも圧倒的に速いため、開発時間の短縮にもなります。加えて、テーブルファーストで作成した場合は、データベースを移行先にデプロイするための移行スクリプト等の開発が追加で必要となり、これも非常に骨が折れる作業となるため、「テーブルファースト」と比べて「コードファースト」は効率的な手法と言えます。
●データベースのバージョン管理が可能
「コードファースト」を採用する事でデータベースのバージョン管理が容易になるのが利点です。なので、もし古いバージョンのアプリケーションを運用する場合、そのアプリケーションのバージョンに合ったデータベースのバージョンに即座にマイグレーション(移行)する事も可能となります。
なので、「コードファースト」はどちらかというとミッションクリティカル「でない」、小規模でスピードが求められる開発には非常に向いていると考えています。
また、GUIベースの操作が必要な場合は「データベースファースト」のデザイナーでGUIが使えるので、そちらの選択肢になるかと思います。