商品管理アプリケーション(1)
以降ではデフォルトで作成されるプロジェクトに対して、商品管理機能を追加するサンプルを紹介します。データはEntity Frameworkを使用してSQL Serverに保存するものとし、基本的なCRUD(Create/Read/Update/Delete)操作をサポートします。また商品一覧ではComponentOne StudioのFlexGridを利用します。
ASP.NET 5環境の構築
執筆時点ではASP.NET 5は開発中のため、Visual Studioとは別にインストールする必要があります。以下の説明は、Visual Studio 2015 Community 2015 Update 1をインストールしている状態から始めていることにご注意ください。
ASP.NET 5をインストールするには、Get ASP.NETからASP.NET 5用のインストーラをダウンロードしてインストールします(執筆時ではRC1版)。
次に、ASP.NET 5ランタイムの最新バージョンをインストールするために、コマンドプロンプトを開いて、以下のコマンドを実行します。
> dnvm upgrade
以上で準備は完了しました。
プロジェクトの作成
ComponentOne Studioをインストールすると、ASP.NET MVC 6用のプロジェクトテンプレートが用意されていますので、このテンプレートを使ってプロジェクトを作成します。プロジェクト名は「C1Mvc6」としました。
![プロジェクトの作成](http://cz-cdn.shoeisha.jp/static/images/article/9270/9270_001_s.gif)
次にComponentOne Studioのプロジェクト設定画面が開くので、ここでテーマなどを設定できるようになっています。ここではデフォルトのままとしました。
![プロジェクトの設定](http://cz-cdn.shoeisha.jp/static/images/article/9270/9270_002.gif)
OKボタンを押下するとプロジェクト作成が実行されます。最初はプロジェクト直下のproject.jsonに定義されたモジュール取得などが実行されるため、少々時間がかかります。
プロジェクトの実行を行う前に、あと一つ大事な作業があります。ComponentOne Studio for ASP.NET MVCでは実行時にライセンス情報が必要となりますが、MVC 6以降はこのライセンス情報を生成する機能がツールとして提供されています。このランタイムライセンスは、メニューから「ツール」-「C1 ASP.NET 5ランタイムライセンスを生成」を実行することで作成されます。
![ランタイムライセンスの生成](http://cz-cdn.shoeisha.jp/static/images/article/9270/9270_003.gif)
ここまでで、デフォルトプロジェクトが実行できるようになりました。デバッグの実行などで動作させてみてください。
モデルの作成
次にモデルを作成します。ASP.NET MVC 6ではEntity Frameworkを使用して、モデルクラスからデータベースのスキーマを生成します。
Entity FrameworkはORM(Object Relational Mapping)フレームワークの一種で、リレーショナルデータをオブジェクトとして扱うことができます。またスキャフォールディングと呼ばれる仕組みを使うことで、モデルクラスからCRUD操作を行うことのできるコントローラ、ビューを、1行のコードを書くことなく作成することができます。
それでは商品を扱うモデルクラスを作成しましょう。
名前 | 説明 |
---|---|
Id | 主キー |
Name | 商品名 |
Price | 価格 |
Supplier | 商品供給者 |
ソリューションエクスプローラで「Models」フォルダを選択し、右クリックメニューから「追加」-「新しい項目」を実行します。いくつかあるテンプレートの中から「クラス」を選択し、ファイル名として「Product.cs」を入力します。商品モデルクラスの実装は以下のように記述しました。
using System.ComponentModel.DataAnnotations; namespace C1Mvc6.Models { public class Product { public int Id { get; set; } [Required] [StringLength(255)] public string Name { get; set; } [Range(1, 10000)] public decimal Price { get; set; } [StringLength(255)] public string Supplier { get; set; } } }
Entity Frameworkでは、アノテーションとしてデータベース上の制約などを記述することができます。上記の例ではRequiredは必須項目、Rangeは値の範囲を、そしてStringLengthは最大文字列長を指定しています。また、Idまたは<クラス名>Idと指定されたプロパティは主キーとして扱われます。
Scaffolding(スキャフォールディング)の実行
モデルクラスができたところで、シンプルなCRUD機能を実現するコントローラとビューを作成します。「Controllers」フォルダを選択し、右クリックメニューから「追加」-「新規スキャフォールディングアイテム」を実行します。
「スキャフォールディングを追加」ダイアログから「Entity Frameworkを使用したビューがある MVC 6コントローラー」を選択し、追加をクリックします。続いて「コントローラを追加」ダイアログに元となるモデル名を指定します。
今回の例では、モデルクラスとして「Product(C1Mvc6.Models)」、データコンテキストクラスとして「ApplicationDbContext(C1Mvc6.Models)」を選択しました。
![コントローラの追加](http://cz-cdn.shoeisha.jp/static/images/article/9270/9270_004.gif)
Controllers、Viewsフォルダ以下に、Product関連のコントローラクラスとビューファイルが生成されたことを確認してください。