モデルの追加 (C#)

作成者: Rick Anderson

このチュートリアルでは、Microsoft Visual Web Developer 2010 Express Service Pack 1 (Microsoft Visual Studio の無料バージョン) を使用した ASP.NET MVC Web アプリケーション構築の基本事項を説明します。 開始する前に、以下に示す前提条件がインストールされていることを確認してください。 次のリンクをクリックすると、これらをすべてインストールできます: Web Platform Installer。 また、次のリンクを使用して前提条件となるソフトウェアを個別にインストールすることもできます。

Visual Web Developer 2010 ではなく Visual Studio 2010 を使用する場合は、Visual Studio 2010 の前提条件のリンクをクリックして、前提条件をインストールします。

このトピックに関連する、Visual Web Developer プロジェクトと C# ソース コードを使用できます。 C# バージョンをダウンロードします。 Visual Basic を使用する場合は、このチュートリアルの Visual Basic バージョンに切り替えてください。

モデルの追加

このセクションでは、データベースのムービーを管理するためのクラスをいくつか追加します。 これらのクラスは 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. Class is selected in the sub menu.

"クラス" に "Movie" という名前を付けます。

CreateMovieClass

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 基底クラスから派生します。 DbContext および DbSet の詳細については、「Entity Framework の生産性の向上」を参照してください。

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

using System.Data.Entity;

完成した Movie.cs ファイルを次に示します。

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 Compact の使用

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

アプリケーション ルートにある Web.config ファイルを開きます。 (Views フォルダー内の 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=|DataDirectory|Movies.sdf" 
         providerName="System.Data.SqlServerCe.4.0"/>

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

<configuration>
  <connectionStrings>
    <add name="MovieDBContext" 
         connectionString="Data Source=|DataDirectory|Movies.sdf" 
         providerName="System.Data.SqlServerCe.4.0"/>
    <add name="ApplicationServices"
         connectionString="data source=.\SQLEXPRESS;Integrated Security=SSPI;AttachDBFilename=|DataDirectory|aspnetdb.mdf;User Instance=true"
         providerName="System.Data.SqlClient" />
  </connectionStrings>

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

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