Database FirstDatabase First

このビデオとステップバイステップのチュートリアルでは、Entity Framework を使用した Database First 開発の概要について説明します。This video and step-by-step walkthrough provide an introduction to Database First development using Entity Framework. Database First を使用すると、既存のデータベースからモデルをリバースエンジニアリングできます。Database First allows you to reverse engineer a model from an existing database. モデルは EDMX ファイル (.edmx 拡張子) に格納されており、Entity Framework Designer で表示および編集できます。The model is stored in an EDMX file (.edmx extension) and can be viewed and edited in the Entity Framework Designer. アプリケーションで対話するクラスは、EDMX ファイルから自動的に生成されます。The classes that you interact with in your application are automatically generated from the EDMX file.

ビデオを見るWatch the video

このビデオでは、Entity Framework を使用した Database First 開発の概要について説明します。This video provides an introduction to Database First development using Entity Framework. Database First を使用すると、既存のデータベースからモデルをリバースエンジニアリングできます。Database First allows you to reverse engineer a model from an existing database. モデルは EDMX ファイル (.edmx 拡張子) に格納されており、Entity Framework Designer で表示および編集できます。The model is stored in an EDMX file (.edmx extension) and can be viewed and edited in the Entity Framework Designer. アプリケーションで対話するクラスは、EDMX ファイルから自動的に生成されます。The classes that you interact with in your application are automatically generated from the EDMX file.

提供: Rowan MillerPresented By: Rowan Miller

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

前提条件Pre-Requisites

このチュートリアルを完了するには、少なくとも Visual Studio 2010 または Visual Studio 2012 がインストールされている必要があります。You will need to have at least Visual Studio 2010 or Visual Studio 2012 installed to complete this walkthrough.

Visual Studio 2010 を使用している場合は、 NuGet もインストールする必要があります。If you are using Visual Studio 2010, you will also need to have NuGet installed.

 

1. 既存のデータベースを作成する1. Create an Existing Database

通常、既存のデータベースを対象とする場合は、既に作成されますが、このチュートリアルでは、にアクセスするデータベースを作成する必要があります。Typically when you are targeting an existing database it will already be created, but for this walkthrough we need to create a database to access.

Visual Studio と共にインストールされるデータベースサーバーは、インストールされている Visual Studio のバージョンによって異なります。The database server that is installed with Visual Studio is different depending on the version of Visual Studio you have installed:

  • Visual Studio 2010 を使用している場合は、SQL Express データベースを作成します。If you are using Visual Studio 2010 you'll be creating a SQL Express database.
  • Visual Studio 2012 を使用している場合は、 LocalDB データベースを作成します。If you are using Visual Studio 2012 then you'll be creating a LocalDB database.

 

では、データベースを生成してみましょう。Let's go ahead and generate the database.

  • Visual Studio を開くOpen Visual Studio

  • ビュー- > サーバーエクスプローラーView -> Server Explorer

  • [データ接続-接続の > 追加] を右クリックします。Right click on Data Connections -> Add Connection…

  • サーバーエクスプローラーからデータベースに接続していない場合は、データソースとして Microsoft SQL Server を選択する必要があります。If you haven’t connected to a database from Server Explorer before you’ll need to select Microsoft SQL Server as the data source

    データ ソースを選択する

  • インストールされているものに応じて LocalDB または SQL Express に接続し、データベース名として「Databasefirst」と入力します。Connect to either LocalDB or SQL Express, depending on which one you have installed, and enter DatabaseFirst.Blogging as the database name

    Sql Express 接続 DF

    LocalDB 接続 DF

  • [ OK] を選択すると、新しいデータベースを作成するかどうかを確認するメッセージが表示されます。 [はい] を選択します。Select OK and you will be asked if you want to create a new database, select Yes

    データベースの作成ダイアログ

  • 新しいデータベースがサーバーエクスプローラーに表示され、右クリックして [新しいクエリ] を選択します。The new database will now appear in Server Explorer, right-click on it and select New Query

  • 次の SQL を新しいクエリにコピーし、クエリを右クリックして、[実行] を選択します。Copy the following SQL into the new query, then right-click on the query and select Execute

CREATE TABLE [dbo].[Blogs] (
    [BlogId] INT IDENTITY (1, 1) NOT NULL,
    [Name] NVARCHAR (200) NULL,
    [Url]  NVARCHAR (200) NULL,
    CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
    [PostId] INT IDENTITY (1, 1) NOT NULL,
    [Title] NVARCHAR (200) NULL,
    [Content] NTEXT NULL,
    [BlogId] INT NOT NULL,
    CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
    CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON DELETE CASCADE
);

2. アプリケーションを作成する2. Create the Application

単純にするために、Database First を使用してデータアクセスを実行する基本的なコンソールアプリケーションを構築します。To keep things simple we’re going to build a basic console application that uses the Database First to perform data access:

  • Visual Studio を開くOpen Visual Studio
  • ファイル- > 新規 > プロジェクト...File -> New -> Project…
  • 左側のメニューとコンソールアプリケーションから [ Windows ] を選択します。Select Windows from the left menu and Console Application
  • 名前として「 Databasefirstsample 」と入力します。Enter DatabaseFirstSample as the name
  • [OK] を選択します。Select OK

 

3. モデルのリバースエンジニアリング3. Reverse Engineer Model

ここでは、Visual Studio の一部として含まれている Entity Framework Designer を使用して、モデルを作成します。We’re going to make use of Entity Framework Designer, which is included as part of Visual Studio, to create our model.

  • プロジェクト- > 新しい項目の追加...Project -> Add New Item…

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

  • 名前として「 Bのログインモデル」と入力し、[ OK] をクリックします。Enter BloggingModel as the name and click OK

  • Entity Data Model ウィザードが起動します。This launches the Entity Data Model Wizard

  • [データベースから生成] を選択し、[次へ] をクリックします。Select Generate from Database and click Next

    ウィザードの手順 1.

  • 最初のセクションで作成したデータベースへの接続を選択し、接続文字列の名前として「 Bのログインコンテキスト」と入力して、[次へ] をクリックします。Select the connection to the database you created in the first section, enter BloggingContext as the name of the connection string and click Next

    ウィザードの手順 2.

  • [テーブル] の横にあるチェックボックスをオンにしてすべてのテーブルをインポートし、[完了] をクリックします。Click the checkbox next to ‘Tables’ to import all tables and click ‘Finish’

    ウィザードの手順 3.

 

リバースエンジニアリングプロセスが完了すると、新しいモデルがプロジェクトに追加され、Entity Framework Designer で表示できるように開かれます。Once the reverse engineer process completes the new model is added to your project and opened up for you to view in the Entity Framework Designer. データベースの接続の詳細を含む App.config ファイルもプロジェクトに追加されています。An App.config file has also been added to your project with the connection details for the database.

モデルの初期

Visual Studio 2010 の追加手順Additional Steps in Visual Studio 2010

Visual Studio 2010 で作業している場合、Entity Framework の最新バージョンにアップグレードするには、いくつかの追加の手順に従う必要があります。If you are working in Visual Studio 2010 there are some additional steps you need to follow to upgrade to the latest version of Entity Framework. アップグレードは、強化された API サーフェイスにアクセスできるようにするために重要です。これは、より使いやすく、最新のバグ修正にも使用できます。Upgrading is important because it gives you access to an improved API surface, that is much easier to use, as well as the latest bug fixes.

まず、NuGet から最新バージョンの Entity Framework を取得する必要があります。First up, we need to get the latest version of Entity Framework from NuGet.

  • プロジェクト– >NuGet パッケージの管理... [ Nuget パッケージの管理... ] オプションがない場合は、最新バージョンの nugetをインストールする必要があります。Project –> Manage NuGet Packages… If you don’t have the Manage NuGet Packages… option you should install the latest version of NuGet
  • [ オンライン ] タブを選択します。Select the Online tab
  • Entityframeworkパッケージを選択しますSelect the EntityFramework package
  • [Install] (インストール) をクリックします。Click Install

次に、モデルをスワップして、新しいバージョンの Entity Framework で導入された DbContext API を使用するコードを生成する必要があります。Next, we need to swap our model to generate code that makes use of the DbContext API, which was introduced in later versions of Entity Framework.

  • EF デザイナーでモデルの空の場所を右クリックし、[コード生成項目の追加... ] を選択します。Right-click on an empty spot of your model in the EF Designer and select Add Code Generation Item…

  • 左側のメニューから [オンラインテンプレート] を選択し、 dbcontextを検索します。Select Online Templates from the left menu and search for DbContext

  • C # の EF 5.X Dbcontext ジェネレーターを選択し、名前として「 bの出力モデル」と入力して、[追加] をクリックします。Select the EF 5.x DbContext Generator for C#, enter BloggingModel as the name and click Add

    DbContext テンプレート

 

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

モデルを作成したので、これを使用していくつかのデータにアクセスします。Now that we have a model it’s time to use it to access some data. データへのアクセスに使用するクラスは、EDMX ファイルに基づいて自動的に生成されます。The classes we are going to use to access data are being automatically generated for you based on the EDMX file.

このスクリーンショットは Visual Studio 2012 からのものです。 Visual Studio 2010 を使用している場合は、BloggingModel.tt ファイルと BloggingModel.Context.tt ファイルは、EDMX ファイルの下に入れ子になっているのではなく、プロジェクトの直下に配置されます。This screen shot is from Visual Studio 2012, if you are using Visual Studio 2010 the BloggingModel.tt and BloggingModel.Context.tt files will be directly under your project rather than nested under the EDMX file.

生成されたクラス DF

 

次に示すように、Program.cs に Main メソッドを実装します。Implement the Main method in Program.cs as shown below. このコードは、コンテキストの新しいインスタンスを作成し、それを使用して新しいブログを挿入します。This code creates a new instance of our context and then uses it to insert a new Blog. 次に、LINQ クエリを使用して、データベースのすべてのブログをタイトル別にアルファベット順に並べ替えて取得します。Then it uses a LINQ query to retrieve all Blogs from the database ordered alphabetically by Title.

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();
        }
    }
}

これで、アプリケーションを実行してテストできるようになりました。You can now run the application and test it out.

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

 

5. データベースの変更に対処する5. Dealing with Database Changes

次に、データベーススキーマをいくつか変更します。これらの変更を行うときは、これらの変更を反映するようにモデルを更新する必要もあります。Now it’s time to make some changes to our database schema, when we make these changes we also need to update our model to reflect those changes.

最初の手順では、データベーススキーマにいくつかの変更を行います。The first step is to make some changes to the database schema. ここでは、ユーザーテーブルをスキーマに追加します。We’re going to add a Users table to the schema.

  • サーバーエクスプローラーでDatabasefirst. ブログデータベースを右クリックし、[新しいクエリ] を選択します。Right-click on the DatabaseFirst.Blogging database in Server Explorer and select New Query
  • 次の SQL を新しいクエリにコピーし、クエリを右クリックして、[実行] を選択します。Copy the following SQL into the new query, then right-click on the query and select Execute
CREATE TABLE [dbo].[Users]
(
    [Username] NVARCHAR(50) NOT NULL PRIMARY KEY,  
    [DisplayName] NVARCHAR(MAX) NULL
)

スキーマが更新されたので、これらの変更によってモデルを更新します。Now that the schema is updated, it’s time to update the model with those changes.

  • EF デザイナーでモデルの空の場所を右クリックし、[データベースからモデルを更新...] を選択すると、更新ウィザードが起動します。Right-click on an empty spot of your model in the EF Designer and select ‘Update Model from Database…’, this will launch the Update Wizard

  • 更新ウィザードの [追加] タブで、[テーブル] の横にあるチェックボックスをオンにします。これは、スキーマから新しいテーブルを追加することを示します。On the Add tab of the Update Wizard check the box next to Tables, this indicates that we want to add any new tables from the schema. [更新] タブには、更新中に変更がチェックされる、モデル内の既存のテーブルが表示されます。[削除] タブには、スキーマから削除されたテーブルが表示され、更新の一部としてモデルからも削除されます。これら2つのタブの情報は自動的に検出され、情報提供のみを目的として提供されます。設定を変更することはできません。The Refresh tab shows any existing tables in the model that will be checked for changes during the update. The Delete tabs show any tables that have been removed from the schema and will also be removed from the model as part of the update. The information on these two tabs is automatically detected and is provided for informational purposes only, you cannot change any settings.

    更新ウィザード

  • 更新ウィザードで [完了] をクリックします。Click Finish on the Update Wizard

 

これで、モデルが更新され、データベースに追加したユーザーテーブルにマップされる新しいユーザーエンティティが追加されました。The model is now updated to include a new User entity that maps to the Users table we added to the database.

更新されたモデル

まとめSummary

このチュートリアルでは Database First 開発について説明しました。これにより、既存のデータベースに基づいて EF デザイナーでモデルを作成できるようになりました。In this walkthrough we looked at Database First development, which allowed us to create a model in the EF Designer based on an existing database. 次に、そのモデルを使用して、データベースのデータの読み取りと書き込みを行います。We then used that model to read and write some data from the database. 最後に、データベーススキーマに加えられた変更を反映するようにモデルを更新しました。Finally, we updated the model to reflect changes we made to the database schema.