20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

ASP.NET MVC5 Scaffolding ことはじめ

Last updated at Posted at 2015-05-20

:dizzy: 環境

  • Windows 8.1 pro
  • SQL Server 2014 Express

:dizzy: 前提

:octocat: SQL Server で sa でのログインを有効化しておく

 → 参考:Microsoft SQLServer 2014 で sa でのログインを有効化

:dizzy: 準備 1:プロジェクトの作成

プロジェクトを作成するよ

左のサイドバーから「Web」を選択し、適当な名前をつけて「OK」

スクリーンショット 2015-05-20 22.39.50.png

下部画像の様に、「テンプレートの種類」は「Empty」を選択。「以下にフォルダーおよびコア参照を追加」へは「MVC」を選択

スクリーンショット 2015-05-20 23.59.10.png

:dizzy: 準備 2:IISにサイトを追加し、hosts を書き換える

IIS の設定をこんな感じで

スクリーンショット 2015-05-21 1.32.44.png

hosts はこんな感じ

127.0.0.1	scaffoldsample

:dizzy: 準備 3:Web.config に connectionStrings を追加

それぞれの環境に合わせて書いてね。name は(後でそういうった名前のクラスを定義するので)「BookContext」にしておいてね!

Web.config
<configuration>
  <connectionStrings>
    <add name="BookContext" connectionString="Data Source=(local)\SQLEXPRESS;Initial Catalog=XXXXXX;User ID=sa;Password=XXXXXXXX;"
      providerName="System.Data.SqlClient" />
  </connectionStrings>
</configuration>

:dizzy: 準備 4:参照の追加、Nugetでパッケージの追加

必要な dll への参照を追加するよ

スクリーンショット 2015-05-20 23.01.32.png

参照マネージャで、左部サイドバーで「アセンブリ」が選択されているのを確認して、右上の検索窓で「Entiry」とでも入れれば「System.Data.Entity」が出てくるのでチェックを入れて「OK」

スクリーンショット 2015-05-20 23.02.16.png

Nuget で EntityFramework も追加

スクリーンショット 2015-05-20 23.07.42.png

もしインストール済みならば

  • EntityFramework
  • EntityFramework.SqlServer

を参照追加すればおk

:dizzy: 準備 5:モデルとコンテキストの作成

自動生成された「Models」ディレクトリに対しクラスを追加していくよ

スクリーンショット 2015-05-20 22.51.24.png

今回は Book とした

スクリーンショット 2015-05-21 0.04.15.png

データモデルを定義するよ。System.ComponentModel.DataAnnotations をusingしておいて、属性をつける。

Book.cs

using System.ComponentModel.DataAnnotations;

namespace ScaffoldSample.Models
{
    public class Book
    {
        [Required]
        [ScaffoldColumn(false)]
        public int id { get; set; }

        [Required]
        public string Title { get; set; }
        
        [Required]
        public int Price { get; set; }
        
        [Required]
        public string Isbn { get; set; }

    }
}

Required は必須かどうか。id列はフォームを作成する必要がないのでScaffoldColumn(false)としておく。

Model ディレクトリに Book のコンテキストも作っておく。

BookContext.cs
using System.Data.Entity;

namespace ScaffoldSample.Models
{
    public class BookContext : DbContext 
    {
        public DbSet<Book> Books { get; set; }
    }
}

:dizzy: Scaffolding

実際に Scaffolding を使ってみよう。自動生成された Controllers ディレクトリ上で、右クリックをし「追加」、「コントローラー」を選ぶ

スクリーンショット 2015-05-20 23.35.13.png

「Entity Framework を使用した、ビューがある MVC コントローラー」を選択

スクリーンショット 2015-05-20 23.35.25.png

先ほど作った(モデルとコンテキスト)それぞれを設定していく

スクリーンショット 2015-05-20 23.36.56.png

これで Scaffold の作成は完了

:dizzy: 確認

http://*****/Books にアクセス

スクリーンショット 2015-05-20 23.39.35.png

Create New を押す。

スクリーンショット 2015-05-20 23.40.00.png

こんな感じで入力して

スクリーンショット 2015-05-20 23.41.29.png

http://*****/Books に再びアクセスすると、「Edit」「Details」「Delete」の UI がついたレコードが追加されている

スクリーンショット 2015-05-20 23.41.49.png

:octocat: Detail (詳細)

スクリーンショット 2015-05-20 23.42.02.png

:octocat: Delete (削除)

スクリーンショット 2015-05-20 23.42.16.png

:octocat: Edit (編集)

スクリーンショット 2015-05-21 1.00.00.png

:octocat: おまけ (つくられたTable)

スクリーンショット 2015-05-21 1.25.12.png

こんな感じで CRUD ができている。
 
実際に自動で生成されたファイル群は別エントリに譲る。

20
20
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
20
20

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?