列挙型のサポート-EF デザイナーEnum Support - EF Designer

注意

EF5 以降: このページで説明した機能、api などは、Entity Framework 5 で導入されました。EF5 Onwards Only - The features, APIs, etc. discussed in this page were introduced in Entity Framework 5. 以前のバージョンを使用している場合、一部またはすべての情報は適用されません。If you are using an earlier version, some or all of the information does not apply.

このビデオとステップバイステップのチュートリアルでは、Entity Framework Designer で列挙型を使用する方法について説明します。This video and step-by-step walkthrough shows how to use enum types with the Entity Framework Designer. また、LINQ クエリで列挙型を使用する方法も示します。It also demonstrates how to use enums in a LINQ query.

このチュートリアルでは Model First を使用して新しいデータベースを作成しますが、既存のデータベースにマップするには、EF Designer を Database First ワークフローと共に使用することもできます。This walkthrough will use Model First to create a new database, but the EF Designer can also be used with the Database First workflow to map to an existing database.

Enum サポートは Entity Framework 5 で導入されました。Enum support was introduced in Entity Framework 5. 列挙型、空間データ型、テーブル値関数などの新機能を使用するには、.NET Framework 4.5 を対象にする必要があります。To use the new features like enums, spatial data types, and table-valued functions, you must target .NET Framework 4.5. 既定では、Visual Studio 2012 は .NET 4.5 を対象としています。Visual Studio 2012 targets .NET 4.5 by default.

Entity Framework では、列挙体には、 ByteInt16Int32Int64 、または SByteの各基になる型を含めることができます。In Entity Framework, an enumeration can have the following underlying types: Byte, Int16, Int32, Int64 , or SByte.

ビデオを見るWatch the Video

このビデオでは、Entity Framework Designer で列挙型を使用する方法について説明します。This video shows how to use enum types with the Entity Framework Designer. また、LINQ クエリで列挙型を使用する方法も示します。It also demonstrates how to use enums in a LINQ query.

表示者: ジュリアついPresented By: Julia Kornich

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

前提条件Pre-Requisites

このチュートリアルを完了するには、Visual Studio 2012、Ultimate、Premium、Professional、または Web Express エディションがインストールされている必要があります。You will need to have Visual Studio 2012, Ultimate, Premium, Professional, or Web Express edition installed to complete this walkthrough.

プロジェクトを設定するSet up the Project

  1. Visual Studio 2012 を開くOpen Visual Studio 2012
  2. [ファイル] メニューの [新規作成] をポイントし、[プロジェクト] をクリックします。On the File menu, point to New, and then click Project
  3. 左側のウィンドウで、[ **Visual C # **] をクリックし、コンソールテンプレートを選択します。In the left pane, click Visual C#, and then select the Console template
  4. プロジェクトの名前として「 Enumefdesigner 」と入力し、[ OK] をクリックします。Enter EnumEFDesigner as the name of the project and click OK

EF デザイナーを使用して新しいモデルを作成するCreate a New Model using the EF Designer

  1. ソリューションエクスプローラーでプロジェクト名を右クリックし、[追加] をポイントして、[新しい項目] をクリックします。Right-click the project name in Solution Explorer, point to Add, and then click New Item
  2. 左側のメニューから [ データ ] を選択し、[テンプレート] ペインで [ ADO.NET Entity Data Model ] を選択します。Select Data from the left menu and then select ADO.NET Entity Data Model in the Templates pane
  3. ファイル名として「 Enumtestmodel. .edmx 」と入力し、[追加] をクリックします。Enter EnumTestModel.edmx for the file name, and then click Add
  4. Entity Data Model ウィザードページで、[モデルのコンテンツの選択] ダイアログボックスの [ 空のモデル ] を選択します。On the Entity Data Model Wizard page, select Empty Model in the Choose Model Contents dialog box
  5. [完了] をクリックします。Click Finish

モデルを編集するためのデザイン画面を提供する Entity Designer が表示されます。The Entity Designer, which provides a design surface for editing your model, is displayed.

ウィザードは、次のアクションを実行します。The wizard performs the following actions:

  • 概念モデル、ストレージモデル、およびそれらの間のマッピングを定義する EnumTestModel .edmx ファイルを生成します。Generates the EnumTestModel.edmx file that defines the conceptual model, the storage model, and the mapping between them. 生成されたメタデータファイルがアセンブリに埋め込まれるように、出力アセンブリに埋め込む .edmx ファイルのメタデータ成果物の処理プロパティを設定します。Sets the Metadata Artifact Processing property of the .edmx file to Embed in Output Assembly so the generated metadata files get embedded into the assembly.
  • 次のアセンブリへの参照を追加します。 EntityFramework、System.componentmodel、および system.object です。Adds a reference to the following assemblies: EntityFramework, System.ComponentModel.DataAnnotations, and System.Data.Entity.
  • EnumTestModel.tt ファイルと EnumTestModel.Context.tt ファイルを作成し、.edmx ファイルの下に追加します。Creates EnumTestModel.tt and EnumTestModel.Context.tt files and adds them under the .edmx file. これらの T4 テンプレートファイルは、.edmx モデル内のエンティティにマップされる DbContext の派生型と POCO 型を定義するコードを生成します。These T4 template files generate the code that defines the DbContext derived type and POCO types that map to the entities in the .edmx model.

新しいエンティティ型の追加Add a New Entity Type

  1. デザイン画面の空の領域を右クリックし、[ ** > エンティティの追加**] を選択すると、[新しいエンティティ] ダイアログボックスが表示されます。Right-click an empty area of the design surface, select Add -> Entity, the New Entity dialog box appears
  2. 型名にDepartmentを指定し、キープロパティ名としてDepartmentIDを指定します。型はInt32型のままにします。Specify Department for the type name and specify DepartmentID for the key property name, leave the type as Int32
  3. [OK]Click OK
  4. エンティティを右クリックし、[新しい > スカラープロパティの追加] を選択します。Right-click the entity and select Add New -> Scalar Property
  5. 新しいプロパティの名前をNameに変更します。Rename the new property to Name
  6. 新しいプロパティの型をint32に変更し (既定では、新しいプロパティは文字列型です)、型を変更し、プロパティウィンドウを開いて、type プロパティをint32に変更します。Change the type of the new property to Int32 (by default, the new property is of String type) To change the type, open the Properties window and change the Type property to Int32
  7. 別のスカラープロパティを追加して、それをBudgetに変更し、型をDecimalに変更します。Add another scalar property and rename it to Budget, change the type to Decimal

列挙型の追加Add an Enum Type

  1. Entity Framework Designer で、[名前] プロパティを右クリックし、[列挙型への変換] を選択します。In the Entity Framework Designer, right-click the Name property, select Convert to enum

    列挙型への変換

  2. [列挙型の 追加 ] ダイアログボックスで、列挙型の名前として「 DepartmentNames 」と入力し、基になる型を Int32に変更してから、次のメンバーを型に追加します。英語、数学、および経済性In the Add Enum dialog box type DepartmentNames for the Enum Type Name, change the Underlying Type to Int32, and then add the following members to the type: English, Math, and Economics

    列挙型の追加

  3. [OK] をクリックします。Press OK

  4. モデルを保存してプロジェクトをビルドするSave the model and build the project

    注意

    ビルドすると、マップされていないエンティティとアソシエーションに関する警告がエラー一覧に表示されることがあります。When you build, warnings about unmapped entities and associations may appear in the Error List. モデルからデータベースを生成することを選択した後、エラーが解消されるため、これらの警告は無視してかまいません。You can ignore these warnings because after we choose to generate the database from the model, the errors will go away.

プロパティウィンドウを見ると、Name プロパティの型が DepartmentNames に変更され、新しく追加された列挙型が型のリストに追加されたことがわかります。If you look at the Properties window, you will notice that the type of the Name property was changed to DepartmentNames and the newly added enum type was added to the list of types.

[モデルブラウザー] ウィンドウに切り替えた場合は、型が [列挙型] ノードにも追加されていることがわかります。If you switch to the Model Browser window, you will see that the type was also added to the Enum Types node.

モデルブラウザー

注意

マウスの右ボタンをクリックし、[ 列挙型の追加] を選択して、このウィンドウから新しい列挙型を追加することもできます。You can also add new enum types from this window by clicking the right mouse button and selecting Add Enum Type. 型が作成されると、型のリストに表示され、プロパティに関連付けることができるようになります。Once the type is created it will appear in the list of types and you would be able to associate with a property

モデルからデータベースを生成Generate Database from Model

これで、モデルに基づくデータベースを生成できます。Now we can generate a database that is based on the model.

  1. Entity Designer 画面の空の領域を右クリックし、[モデルからデータベースを生成] を選択します。Right-click an empty space on the Entity Designer surface and select Generate Database from Model
  2. データベース生成ウィザードの [データ接続の選択] ダイアログボックスが表示されたら、[新しい接続] ボタンをクリックします。 [サーバー名] に 「(localdb) \ Mssqllocaldb 、データベースにEnumtestを指定し、[ OK ] をクリックします。The Choose Your Data Connection Dialog Box of the Generate Database Wizard is displayed Click the New Connection button Specify (localdb)\mssqllocaldb for the server name and EnumTest for the database and click OK
  3. 新しいデータベースを作成するかどうかを確認するダイアログボックスが表示されたら、[ はい] をクリックします。A dialog asking if you want to create a new database will pop up, click Yes.
  4. [ 次へ ] をクリックすると、データベースの作成ウィザードによって、生成された ddl がデータベースを作成するためのデータ定義言語 (ddl) が生成されます。 [概要と設定] ダイアログボックスには、ddl に列挙型にマップされているテーブルの定義が含まれていないことを確認します。Click Next and the Create Database Wizard generates data definition language (DDL) for creating a database The generated DDL is displayed in the Summary and Settings Dialog Box Note, that the DDL does not contain a definition for a table that maps to the enumeration type
  5. [ 完了 ] をクリックすると、DDL スクリプトは実行されません。Click Finish Clicking Finish does not execute the DDL script.
  6. データベースの作成ウィザードでは、次のことが行われます。 T-sql エディターで Enumtest. .edmx. sql が生成され、edmx ファイルのストアスキーマとマッピングセクションによって、App.config ファイルに接続文字列情報が追加されます。The Create Database Wizard does the following: Opens the EnumTest.edmx.sql in T-SQL Editor Generates the store schema and mapping sections of the EDMX file Adds connection string information to the App.config file
  7. T-sql エディターでマウスの右ボタンをクリックし、[サーバーへの接続] ダイアログボックスが表示されたら、手順2の接続情報を入力して [接続] をクリックします。Click the right mouse button in T-SQL Editor and select Execute The Connect to Server dialog appears, enter the connection information from step 2 and click Connect
  8. 生成されたスキーマを表示するには、SQL Server オブジェクトエクスプローラーでデータベース名を右クリックし、[最新の状態に更新] を選択します。To view the generated schema, right-click on the database name in SQL Server Object Explorer and select Refresh

データの永続化と取得Persist and Retrieve Data

Main メソッドが定義されている Program.cs ファイルを開きます。Open the Program.cs file where the Main method is defined. Main 関数に次のコードを追加します。Add the following code into the Main function. このコードは、新しい Department オブジェクトをコンテキストに追加します。The code adds a new Department object to the context. その後、データを保存します。It then saves the data. また、このコードでは、名前が DepartmentNames である Department を返す LINQ クエリも実行されます。The code also executes a LINQ query that returns a Department where the name is DepartmentNames.English.

using (var context = new EnumTestModelContainer())
{
    context.Departments.Add(new Department{ Name = DepartmentNames.English });

    context.SaveChanges();

    var department = (from d in context.Departments
                        where d.Name == DepartmentNames.English
                        select d).FirstOrDefault();

    Console.WriteLine(
        "DepartmentID: {0} and Name: {1}",
        department.DepartmentID,  
        department.Name);
}

アプリケーションをコンパイルして実行します。Compile and run the application. このプログラムの出力は、次のようになります。The program produces the following output:

DepartmentID: 1 Name: English

データベースのデータを表示するには、SQL Server オブジェクトエクスプローラーでデータベース名を右クリックし、[最新の情報に 更新] を選択します。To view data in the database, right-click on the database name in SQL Server Object Explorer and select Refresh. 次に、テーブルのマウスの右ボタンをクリックし、[ データの表示] を選択します。Then, click the right mouse button on the table and select View Data.

まとめSummary

このチュートリアルでは、Entity Framework Designer を使用して列挙型をマップする方法と、コードで enum を使用する方法について説明しました。In this walkthrough we looked at how to map enum types using the Entity Framework Designer and how to use enums in code.