Rainbow Engine

IT技術を分かりやすく簡潔にまとめることによる学習の効率化、また日常の気付きを記録に残すことを目指します。

ASP.NET

Entity Frameworkのコードファーストとデータベースファーストの特徴や違いについて

投稿日:2021年8月12日 更新日:

 

<目次>

(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が使えるので、そちらの選択肢になるかと思います。
 

Adsense審査用広告コード


Adsense審査用広告コード


-ASP.NET

執筆者:


comment

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

関連記事

ASP.NET MVCのRouteConfigを追加する方法を2つご紹介

  <目次> (1) ASP.NET MVCのRouteConfigを追加する方法を2つご紹介  (1-1) やりたい事の整理  (1-2) 方法1:通常のルーティング  (1-3) 方法2 …

BundleConfig.csの設定および記述方法について

  <目次> (1) BundleConfig.csの設定および記述方法について  (1-1) BundleConfig.csの設定および記述方法について  (1-2) BundleConf …

ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法

  <目次> (1) ASP.NETでビュー(View)に複数のモデル(Model)を連携する方法  (1-1) やりたい事の整理  (1-2) ViewModelを使った複数モデルの連携 …

ASP.NET MVCにおけるSessionオブジェクトについて

<目次> (1) ASP.NET MVCにおけるSessionオブジェクトについて  (1-1) Session(セッション)とは?   (1-1-1) セッションの開始と終了  (1-2) Sess …

ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順

<目次> (1) ASP.NETの既存プロジェクトに単体テストプロジェクトを追加する手順  (1-1) 新規プロジェクトを作成  (1-2) 参照の追加  (1-3) 単体テスト用のコードの記述  ( …

  • English (United States)
  • 日本語
Top