モデルの追加 (C#)
作成者: Rick Anderson
このチュートリアルでは、Microsoft Visual Web Developer 2010 Express Service Pack 1 (Microsoft Visual Studio の無料バージョン) を使用した ASP.NET MVC Web アプリケーション構築の基本事項を説明します。 開始する前に、以下に示す前提条件がインストールされていることを確認してください。 次のリンクをクリックすると、これらをすべてインストールできます: Web Platform Installer。 また、次のリンクを使用して前提条件となるソフトウェアを個別にインストールすることもできます。
- Visual Studio Web Developer Express SP1 の前提条件
- ASP.NET MVC 3 Tools Update
- SQL Server Compact 4.0 (ランタイム + ツールのサポート)
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 フォルダーを右クリックし、[追加]、[クラス] の順に選択します。
"クラス" に "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
基底クラスから派生します。 DbContext
および DbSet
の詳細については、「Entity Framework の生産性の向上」を参照してください。
DbContext
と DbSet
を参照できるようにするためには、ファイル上部に 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 ファイルを開きます。
次の接続文字列を、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
クラスを構築します。