エンティティフレームワーク-データベースファーストアプローチ

この章では、DatabaseFirstアプローチを使用したエンティティデータモデルの作成について学習します。

  • データベースファーストアプローチは、エンティティデータモデルに対するコードファーストおよびモデルファーストアプローチの代替手段を提供します。プロジェクト内のデータベースからモデルコード(クラス、プロパティ、DbContextなど)を作成し、それらのクラスがデータベースとコントローラー間のリンクになります。

  • データベースファーストアプローチは、既存のデータベースからエンティティフレームワークを作成します。モデル/データベースの同期やコード生成など、他のすべての機能は、モデルファーストのアプローチで使用したのと同じ方法で使用します。

簡単な例を見てみましょう。次の画像に示すように、3つのテーブルを含むデータベースがすでにあります。

Step 1 −DatabaseFirstDemoという名前の新しいコンソールプロジェクトを作成しましょう。

Step 2 −モデルを作成するには、最初にソリューションエクスプローラーでコンソールプロジェクトを右クリックし、[追加]→[新しいアイテム...]を選択します。

Step 3 −中央のペインから[ADO.NETエンティティデータモデル]を選択し、[名前]フィールドに名前DatabaseFirstModelと入力します。

Step 4 − [追加]ボタンをクリックして、[エンティティデータモデルウィザード]ダイアログを起動します。

Step 5 −データベースからEF Designerを選択し、[次へ]ボタンをクリックします。

Step 6 −既存のデータベースを選択し、[次へ]をクリックします。

Step 7 − Entity Framework 6.xを選択し、[次へ]をクリックします。

Step 8 −含めるすべてのテーブルビューとストアドプロシージャを選択し、[完了]をクリックします。

エンティティモデルとPOCOクラスがデータベースから生成されていることがわかります。

ここで、program.csファイルに次のコードを記述して、データベースからすべての学生を取得しましょう。

using System;
using System.Linq;

namespace DatabaseFirstDemo {

   class Program {

      static void Main(string[] args) {

         using (var db = new UniContextEntities()) {

            var query = from b in db.Students
               orderby b.FirstMidName select b;

            Console.WriteLine("All All student in the database:");

            foreach (var item in query) {
               Console.WriteLine(item.FirstMidName +" "+ item.LastName);
            }

            Console.WriteLine("Press any key to exit...");
            Console.ReadKey();
         }
      }
   }
}

上記のプログラムを実行すると、次の出力が表示されます-

All student in the database:
Ali Khan
Arturo   finand
Bill Gates
Carson Alexander
Gytis Barzdukas
Laura Norman
Meredith Alonso
Nino Olivetto
Peggy Justice
Yan Li
Press any key to exit...

上記のプログラムを実行すると、以前にデータベースに入力されたすべての学生の名前が表示されます。

理解を深めるために、上記の例を段階的に実行することをお勧めします。