次の方法で共有


モデルの追加 (2012)

作成者: Rick Anderson

Note

ASP.NET MVC 5 と Visual Studio 2013 を使用するこのチュートリアルの更新版は、こちらで入手できます。 より安全で、より簡単に操作でき、より多くの機能を備えています。

このセクションでは、データベースのムービーを管理するためのクラスをいくつか追加します。 これらのクラスは、ASP.NET MVC アプリケーションの「モデル」部分です。

Entity Framework と呼ばれる .NET Framework のデータアクセス テクノロジを使用して、これらのモデル クラスを定義し、使用します。 Entity Framework (EF とも呼ばれる) は、Code First と呼ばれる開発パラダイムをサポートしています。 Code First を使用すると、簡単なクラスを記述することでモデル オブジェクトを作成できます。 (これらは、POCO (Plain-Old CLR Objects) クラスとも呼ばれます)。そして、クラスからすぐに作成されるデータベースを利用できるため、開発ワークフローがすっきりとした迅速なものになります。

モデル クラスの追加

ソリューション エクスプローラーModels フォルダーを右クリックし、[追加][クラス] の順に選択します。

Screenshot that shows the Solution Explorer window. Add is selected in the Models right click menu and Class is selected in the sub menu.

クラス名として「Movie」と入力します。

Movie クラスに次の 5 つのプロパティを追加します。

public class Movie 
{
    public int ID { get; set; }
    public string Title { get; set; }
    public DateTime ReleaseDate { get; set; }
    public string Genre { get; set; }
    public decimal Price { get; set; }
}

この Movie クラスを使用して、データベース内のムービーを表現します。 Movie オブジェクトの各インスタンスはデータベース テーブル内の行に対応しており、Movie クラスの各プロパティはテーブルの列に対応しています。

同じファイルで、次の MovieDBContext クラスを追加します。

public class MovieDBContext : DbContext 
{
    public DbSet<Movie> Movies { get; set; } 
}

MovieDBContext クラスは Entity Framework のムービー データベース コンテキストを表しており、データベースに対する Movie クラス インスタンスのフェッチ、保存、更新を処理します。 MovieDBContext は、Entity Framework が提供する DbContext 基底クラスから派生しています。

DbContextDbSet を参照できるようにするためには、ファイル上部に using ステートメントを追加する必要があります。

using System.Data.Entity;

完成した Movie.cs ファイルを次に示します。 (必要のないいくつかの using ステートメントは削除されています)。

using System;
using System.Data.Entity;

namespace MvcMovie.Models
{
    public class Movie
    {
        public int ID { get; set; }
        public string Title { get; set; }        
        public DateTime ReleaseDate { get; set; }        
        public string Genre { get; set; }
        public decimal Price { get; set; }
    }

    public class MovieDBContext : DbContext
    {
        public DbSet<Movie> Movies { get; set; }
    }
}

接続文字列の作成と SQL Server LocalDB の使用

作成した MovieDBContext クラスは、データベースへの接続と、Movie オブジェクトのデータベース レコードへのマッピングのタスクを処理ます。 接続するデータベースを指定する方法について疑問をお持ちかもしれません。 これは、アプリケーションの Web.config ファイルに接続情報を追加することで行います。

アプリケーション ルートにある Web.config ファイルを開きます。 (ビュー フォルダーの Web.config ファイルではありません)。赤で囲まれている Web.config ファイルを開きます。

Screenshot that shows the Solution Explorer window. Web dot config is circled in red.

次の接続文字列を、Web.config ファイルの <connectionStrings> 要素に追加します。

<add name="MovieDBContext" 
   connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
   providerName="System.Data.SqlClient" 
/>

次の例は、新しい接続文字列が追加された Web.config ファイルの一部を示しています。

<connectionStrings>
  <add name="DefaultConnection" 
       connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=aspnet-MvcMovie-2012213181139;Integrated Security=true" 
       providerName="System.Data.SqlClient" 
  />    
  <add name="MovieDBContext" 
       connectionString="Data Source=(LocalDB)\v11.0;AttachDbFilename=|DataDirectory|\Movies.mdf;Integrated Security=True" 
       providerName="System.Data.SqlClient" 
  /> 
</connectionStrings>

この小さなコードと XML を記述するだけで、ムービー データを表現してデータベースで保存することができます。

次に、ムービー データを表示し、ユーザーが新しいムービー一覧を作成できるようにするための新しい MoviesController クラスを構築します。