Model First

このビデオとステップバイステップのチュートリアルでは、Entity Framework を使用した Model First 開発の概要について説明します。 Model First を使用すると、Entity Framework Designer を使用して新しいモデルを作成し、モデルからデータベーススキーマを生成できます。 モデルは EDMX ファイル (.edmx 拡張子) に格納されており、Entity Framework Designer で表示および編集できます。 アプリケーションで対話するクラスは、EDMX ファイルから自動的に生成されます。

ビデオを見る

このビデオとステップバイステップのチュートリアルでは、Entity Framework を使用した Model First 開発の概要について説明します。 Model First を使用すると、Entity Framework Designer を使用して新しいモデルを作成し、モデルからデータベーススキーマを生成できます。 モデルは EDMX ファイル (.edmx 拡張子) に格納されており、Entity Framework Designer で表示および編集できます。 アプリケーションで対話するクラスは、EDMX ファイルから自動的に生成されます。

提供: Rowan Miller

ビデオ: WMV | MP4 | WMV (ZIP)

前提条件

このチュートリアルを完了するには、Visual Studio 2010 または Visual Studio 2012 がインストールされている必要があります。

Visual Studio 2010 を使用している場合は、 NuGet もインストールする必要があります。

1. アプリケーションを作成する

単純にするために、Model First を使用してデータアクセスを実行する基本的なコンソールアプリケーションを構築します。

  • Visual Studio を開く
  • ファイル- > 新規 > プロジェクト...
  • 左側のメニューとコンソールアプリケーションから [ Windows ] を選択します。
  • 名前として Modelfirstsample を入力します
  • [OK] を選択します。

2. モデルを作成する

ここでは、Visual Studio の一部として含まれている Entity Framework Designer を使用して、モデルを作成します。

  • プロジェクト- > 新しい項目の追加...

  • 左側のメニューから [ データ ] を選択し、[ADO.NET] をクリックし Entity Data Model

  • 名前として「 Bloggingmodel 」と入力し、[ OK] をクリックすると、Entity Data Model ウィザードが起動します。

  • 空のモデルを選択し、[完了] をクリックします

    空のモデルの作成

空のモデルを使用して Entity Framework Designer が開かれています。 これで、モデルへのエンティティ、プロパティ、およびアソシエーションの追加を開始できます。

  • デザイン画面を右クリックし、[プロパティ] を選択します。

  • [エンティティコンテナー名] をbプロパティウィンドウコンテキストに変更します。 これは、生成される派生コンテキストの名前です。コンテキストは、データベースとのセッションを表し、データのクエリと保存を行うことができます。

  • デザイン画面を右クリックし、[新しい > エンティティの追加] を選択します。

  • エンティティ名として「ブログ」を、キー名として Blog id 」を入力し、[OK] をクリックします。

    ブログエンティティの追加

  • デザイン画面で新しいエンティティを右クリックし、[ 新しい > スカラープロパティの追加] を選択し、プロパティの名前として「 name 」と入力します。

  • Urlプロパティを追加するには、この手順を繰り返します。

  • デザイン画面で [ url ] プロパティを右クリックし、[プロパティ] を選択します。 [プロパティウィンドウ [ null 許容] 設定を [ True] に変更します。これにより、ブログに url を割り当てずにデータベースにブログを保存できるようになります。

  • 習得した手法を使用して、 PostId key プロパティを持つPostエンティティを追加します。

  • Postエンティティにタイトルコンテンツのスカラープロパティを追加する

いくつかのエンティティを作成したので、次はそれらの間にアソシエーション (またはリレーションシップ) を追加します。

  • デザイン画面を右クリックし、[新しい > 関連付けの追加] を選択します。

  • リレーションシップの一方の端点を、多重度が1で、もう一方のエンドポイントが複数要素の接続性Manyを持つブログになるようにします。 これは、ブログに多数の投稿があり、投稿が1つのブログに属していることを意味します。

  • [外部キーのプロパティを ' Post ' エンティティに追加する] チェックボックスがオンになっていることを確認し、[ OK ] をクリックします。

    関連付けの追加 (MF)

ここでは、データベースを生成してデータの読み書きに使用できる単純なモデルを用意しました。

モデルの初期

Visual Studio 2010 の追加手順

Visual Studio 2010 で作業している場合、Entity Framework の最新バージョンにアップグレードするには、いくつかの追加の手順に従う必要があります。 アップグレードは、強化された API サーフェイスにアクセスできるようにするために重要です。これは、より使いやすく、最新のバグ修正にも使用できます。

まず、NuGet から最新バージョンの Entity Framework を取得する必要があります。

  • プロジェクト– >NuGet パッケージの管理... [ Nuget パッケージの管理... ] オプションがない場合は、最新バージョンの nugetをインストールする必要があります。
  • [ オンライン ] タブを選択します。
  • Entityframeworkパッケージを選択します
  • [Install] (インストール) をクリックします。

次に、モデルをスワップして、新しいバージョンの Entity Framework で導入された DbContext API を使用するコードを生成する必要があります。

  • EF デザイナーでモデルの空の場所を右クリックし、[コード生成項目の追加... ] を選択します。

  • 左側のメニューから [オンラインテンプレート] を選択し、 dbcontextを検索します。

  • C # の EF 5.X Dbcontext ジェネレーターを選択し、名前として「 bの出力モデル」と入力して、[追加] をクリックします。

    DbContext テンプレート

3. データベースを生成する

モデルを使用すると、Entity Framework は、モデルを使用してデータの格納と取得を行うことができるデータベーススキーマを計算できます。

Visual Studio と共にインストールされるデータベースサーバーは、インストールされている Visual Studio のバージョンによって異なります。

  • Visual Studio 2010 を使用している場合は、SQL Express データベースを作成します。
  • Visual Studio 2012 を使用している場合は、 LocalDB データベースを作成します。

では、データベースを生成してみましょう。

  • デザイン画面を右クリックし、[モデルからデータベースを生成... ] を選択します。

  • [新しい接続] をクリックします。 使用している Visual Studio のバージョンに応じて、LocalDB または SQL Express のいずれかを指定し、データベース名として「 Modelfirst 」と入力します。

    LocalDB 接続の MF

    Sql Express 接続の MF

  • [ OK] を選択すると、新しいデータベースを作成するかどうかを確認するメッセージが表示されます。 [はい] を選択します。

  • [ 次へ ] を選択すると、データベーススキーマを作成するスクリプトが Entity Framework Designer によって計算されます。

  • スクリプトが表示されたら、[ 完了 ] をクリックすると、スクリプトがプロジェクトに追加されて開かれます。

  • スクリプトを右クリックして [ 実行] を選択すると、接続先のデータベースを指定するように求められます。使用している Visual Studio のバージョンに応じて、LocalDB または SQL Server Express を指定します。

4. データの読み取り & 書き込み

モデルを作成したので、これを使用していくつかのデータにアクセスします。 データへのアクセスに使用するクラスは、EDMX ファイルに基づいて自動的に生成されます。

このスクリーンショットは Visual Studio 2012 からのものです。 Visual Studio 2010 を使用している場合は、BloggingModel.tt ファイルと BloggingModel.Context.tt ファイルは、EDMX ファイルの下に入れ子になっているのではなく、プロジェクトの直下に配置されます。

生成されたクラス

次に示すように、Program.cs に Main メソッドを実装します。 このコードは、コンテキストの新しいインスタンスを作成し、それを使用して新しいブログを挿入します。 次に、LINQ クエリを使用して、データベースのすべてのブログをタイトル別にアルファベット順に並べ替えて取得します。

class Program
{
    static void Main(string[] args)
    {
        using (var db = new BloggingContext())
        {
            // Create and save a new Blog
            Console.Write("Enter a name for a new Blog: ");
            var name = Console.ReadLine();

            var blog = new Blog { Name = name };
            db.Blogs.Add(blog);
            db.SaveChanges();

            // Display all Blogs from the database
            var query = from b in db.Blogs
                        orderby b.Name
                        select b;

            Console.WriteLine("All blogs in the database:");
            foreach (var item in query)
            {
                Console.WriteLine(item.Name);
            }

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

これで、アプリケーションを実行してテストできるようになりました。

Enter a name for a new Blog: ADO.NET Blog
All blogs in the database:
ADO.NET Blog
Press any key to exit...

5. モデルの変更を処理する

次に、モデルに何らかの変更を加えてみましょう。これらの変更を行うときは、データベーススキーマも更新する必要があります。

まず、モデルに新しいユーザーエンティティを追加します。

  • キーの名前と文字列としてユーザーを持つ新しいユーザーエンティティ名を、キーのプロパティの型として追加します。

    ユーザーエンティティの追加

  • デザイン画面で [ユーザー名] プロパティを右クリックし、 [プロパティ] を選択します。プロパティウィンドウ、[ MaxLength ] 設定を50に変更します。これに より、ユーザー名に格納できるデータが50文字に制限されます。

  • DisplayNameスカラープロパティをUserエンティティに追加する

これで、モデルが更新され、新しいユーザーエンティティ型に対応するようにデータベースを更新する準備ができました。

  • デザイン画面を右クリックし、[ モデルからデータベースを生成] を選択すると、Entity Framework によって、更新されたモデルに基づいてスキーマを再作成するスクリプトが計算されます。
  • [完了] をクリックします。
  • 既存の DDL スクリプトとモデルのマッピングおよびストレージ部分の上書きに関する警告が表示される場合は、両方の警告に対して [ はい ] をクリックします。
  • データベースを作成するための更新された SQL スクリプトが開きます
    生成されたスクリプトは、既存のすべてのテーブルを削除してから、スキーマを最初から再作成します。これは、ローカルでの開発では機能しますが、既に配置されているデータベースに変更をプッシュする場合には有効ではありません。既に配置されているデータベースに変更を発行する必要がある場合は、スクリプトを編集するか、スキーマ比較ツールを使用して移行スクリプトを計算する必要があります。
  • スクリプトを右クリックして [ 実行] を選択すると、接続先のデータベースを指定するように求められます。使用している Visual Studio のバージョンに応じて、LocalDB または SQL Server Express を指定します。

まとめ

このチュートリアルでは Model First の開発について説明しました。これにより、EF デザイナーでモデルを作成し、そのモデルからデータベースを生成することができました。 次に、モデルを使用して、データベースのデータの読み取りと書き込みを行います。 最後に、モデルを更新した後、モデルに一致するようにデータベーススキーマを再作成しました。