Entity-framework-entity-model-first-approach
提供:Dev Guides
エンティティフレームワーク-モデルファーストアプローチ
この章では、Model Firstと呼ばれるワークフローを使用して、デザイナーでエンティティデータモデルを作成する方法を学習します。
- Model Firstは、データベースがまだ存在しない新しいプロジェクトを開始するときに最適です。
- モデルはEDMXファイルに保存され、Entity Framework Designerで表示および編集できます。
- Model Firstでは、Entity Frameworkデザイナーでモデルを定義してから、モデルに一致するデータベーススキーマを作成するSQLを生成し、SQLを実行してデータベースにスキーマを作成します。
- アプリケーションで対話するクラスは、EDMXファイルから自動的に生成されます。
以下は、モデルファーストアプローチを使用して新しいコンソールプロジェクトを作成する簡単な例です。
- ステップ1 *-Visual Studioを開き、ファイル→新規→プロジェクトを選択します
- ステップ2 *-左ペインから[インストール済み]→[テンプレート]→[Visual C#]→[Windows]を選択し、中央ペインで[コンソールアプリケーション]を選択します。
- ステップ3 *-[名前]フィールドに「EFModelFirstDemo」と入力します。
- ステップ4 *-モデルを作成するには、まずソリューションエクスプローラーでコンソールプロジェクトを右クリックし、[追加]→[新しいアイテム…]を選択します。
次のダイアログが開きます。
- ステップ5 *-中央のペインからADO.NET Entity Data Modelを選択し、NameフィールドにModelFirstDemoDBという名前を入力します。
- ステップ6 *-[追加]ボタンをクリックして、[エンティティデータモデルウィザード]ダイアログを起動します。
- ステップ7 *-空のEF Designerモデルを選択し、[次へ]ボタンをクリックします。 Entity Framework Designerが開き、空のモデルが表示されます。 これで、エンティティ、プロパティ、および関連付けをモデルに追加できます。
- ステップ8 *-デザイン画面を右クリックして、[プロパティ]を選択します。 [プロパティ]ウィンドウで、[エンティティコンテナ名]をModelFirstDemoDBContextに変更します。
- ステップ9 *-デザイン画面を右クリックして、[新規追加]→[エンティティ…]を選択します
次の図に示すように、[エンティティの追加]ダイアログが開きます。
- ステップ10 *-エンティティ名としてStudent、プロパティ名としてStudent IDを入力して、[OK]をクリックします。
- ステップ11 *-デザイン画面で新しいエンティティを右クリックし、[新規追加]→[スカラープロパティ]を選択して、プロパティの名前として[名前]を入力します。
- ステップ12 *-FirstNameを入力し、LastNameやEnrollmentDateなどの別の2つのスカラープロパティを追加します。
- ステップ13 *-上記のすべてのステップに従って、さらに2つのエンティティコースと登録を追加し、次のステップに示すようにいくつかのスカラープロパティも追加します。
- ステップ14 *-Visual Designerに3つのエンティティがあります。それらの間に何らかの関連または関係を追加しましょう。
- ステップ15 *-デザイン画面を右クリックして、[新規追加]→[関連付け…]を選択します。
- ステップ16 *-関係の一方の端を生徒の多重度で1つ、もう一方の端点を多数の登録で登録する。
- ステップ17 *-これは、学生が多くの登録を持ち、登録が1人の学生に属することを意味します。
- ステップ18 *-[外部エンティティのプロパティを[投稿]エンティティに追加する]ボックスがオンになっていることを確認し、[OK]をクリックします。
- ステップ19 *-同様に、コースと登録の間にもう1つの関連付けを追加します。
- ステップ20 *-エンティティ間に関連付けを追加すると、データモデルは次の画面のようになります。
これで、データベースを生成し、データの読み取りと書き込みに使用できる単純なモデルができました。 先に進み、データベースを生成しましょう。
- ステップ1 *-デザイン画面を右クリックして、[モデルからデータベースを生成…]を選択します。
- ステップ2 *-[新しい接続]をクリックして、既存のデータベースを選択するか、新しい接続を作成できます…
- ステップ3 *-新しいデータベースを作成するには、[新しい接続]をクリックします…
- ステップ4 *-サーバー名とデータベース名を入力します。
- ステップ5 *-[次へ]をクリックします。
ステップ6 *-[完了]をクリックします。 これにより、プロジェクトに .edmx.sqlファイルが追加されます。 .sqlファイルを開いてVisual StudioでDDLスクリプトを実行し、右クリックして[実行]を選択します。
- ステップ7 *-データベースに接続するための次のダイアログが表示されます。
- ステップ8 *-正常に実行されると、次のメッセージが表示されます。
- ステップ9 *-サーバーエクスプローラーに移動すると、指定された3つのテーブルでデータベースが作成されていることがわかります。
次に、モデルを交換して、DbContext APIを使用するコードを生成する必要があります。
- ステップ1 *-EF Designerでモデルの空の場所を右クリックし、[コード生成アイテムを追加…]を選択します
次の[新しい項目の追加]ダイアログが開きます。
- ステップ2 *-中央のペインでEF 6.x DbContext Generatorを選択し、[名前]フィールドにModelFirstDemoModelと入力します。
- ステップ3 *-ソリューションエクスプローラーで、ModelFirstDemoModel.Context.ttおよびModelFirstDemoModel.ttテンプレートが生成されることがわかります。
ModelFirstDemoModel.Contextは、DbCcontextとオブジェクトセットを生成します。これらのオブジェクトセットを返すと、クエリ、コンテキスト、学生、コースなどに使用できます。
他のテンプレートは、学生、コースなどのすべてのタイプを扱います。 以下は、エンティティモデルから自動的に生成されるStudentクラスです。
以下は、データベースにデータを入力および取得するC#コードです。
using System;
using System.Linq;
namespace EFModelFirstDemo {
class Program {
static void Main(string[] args) {
using (var db = new ModelFirstDemoDBContext()) {
//Create and save a new Student
Console.Write("Enter a name for a new Student: ");
var firstName = Console.ReadLine();
var student = new Student {
StudentID = 1,
FirstName = firstName
};
db.Students.Add(student);
db.SaveChanges();
var query = from b in db.Students
orderby b.FirstName select b;
Console.WriteLine("All student in the database:");
foreach (var item in query) {
Console.WriteLine(item.FirstName);
}
Console.WriteLine("Press any key to exit...");
Console.ReadKey();
}
}
}
}
上記のコードが実行されると、次の出力が表示されます-
Enter a name for a new Student:
Ali Khan
All student in the database:
Ali Khan
Press any key to exit...
理解を深めるために、上記の例を段階的に実行することをお勧めします。