ホーム > ASP.NET MVC 3, EF 4.1 Code First, mvcConf @:Japan > mvcConf @:Japan ふりかえり 1: MVC3 + CodeFirst デモ

mvcConf @:Japan ふりかえり 1: MVC3 + CodeFirst デモ

mvcConf @:Japan で「MVCのM」という題でセッションを行いました。
十分に話せなかった点も多いので、何回かにわけてBlog上でセッションを再構成してみたいと思います。

最初にMVC3とEF 4.1 CodeFirstを使ってサンプルアプリケーションを構築します。
前提としてASP.NET MVC 3 Tools Updateが動作する環境を用意してください。
セッション中では説明しませんでしたが、私のデモでは無償で利用できるVisual Web Developer 2010を使用していました。
もちろん VisualStudio 2010でもまったく同じことができます。

1) 新規に ASP.NET MVC 3 Web アプリケーションを作成します。

2) ModelsフォルダにMyDal.csクラス(名前は別でもかまいません)を追加し、下記のコードを記述します。
*実際のセッションではあらかじめ作成してあったcsファイルを追加しました。

—————————————————————————————–

using System;
using System.Collections.Generic;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations;

namespace MyDal
{
    public class Member
    {
        public int ID { get; set; }
        [Required(ErrorMessage="名前は必須入力です")]
        public string Name { get; set; }
        [RegularExpression(@"[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,4}", ErrorMessage = "メールが正しくありません")]
        public string Mail { get; set; }
        public int CategoryID { get; set; }
        public DateTime? BirthDay { get; set; }
        public int? Age
        {
            get
            {
                int? age = null;
                if (BirthDay != null)
                {
                    age = DateTime.Now.Year – BirthDay.Value.Year;
                    if (DateTime.Now < BirthDay.Value.AddDays(-1).AddYears(age.Value)) age -= 1;
                }
                return age;
            }
        }

        public virtual Category Category { get; set; }
    }

    public class Category
    {
        public int CategoryID { get; set; }
        public string Name { get; set; }

        public virtual ICollection<Member> Members { get; set; }
    }

    public class GroupContext : DbContext
    {
        public DbSet<Member> Members { get; set; }
        public DbSet<Category> Categories { get; set; }
    }

    public class GroupInitializer : DropCreateDatabaseIfModelChanges<GroupContext>
    {
        protected override void Seed(GroupContext context)
        {
            var categories = new List<Category>
            {
                new Category{ Name = "仕事"},
                new Category{ Name = "オンライン"},
                new Category{ Name = "オフライン"},
            };
            categories.ForEach(s => context.Categories.Add(s));
            context.SaveChanges();
        }
    }
}

—————————————————————————————–

3) web.config にDB接続文字列を追加します。

—————————————————————————————–

<add name="GroupContext" connectionString="Data Source=|DataDirectory|\Group.sdf" providerName="System.Data.SqlServerCe.4.0"/>

—————————————————————————————–

4) Global.asax.cs 内の Application_Start() メソッドに DB 初期化のコードを追加します。

—————————————————————————————-

System.Data.Entity.Database.SetInitializer<MyDal.GroupContext>(new MyDal.GroupInitializer());

—————————————————————————————-

5) ビルドを実行します。

6) Controllers フォルダを右クリックし、「追加」-「コントローラー」を選択します。

7) MemberController を以下の設定で追加(スキャッフォールディング)します。

image

8 ) MemberController.cs ファイル および Memberの各種ビューが追加されたことを確認します。

image

9) デバッグを開始し、「http://localhost:ポート番号/Member」 にアクセスします。

image

10) Create New リンクをクリックします。

image

11) Mail 項目に「test」とだけ入力し、Createボタンを押してエラー表示を確認します。

image

12) 項目に適当な値を入力し、Createボタンをクリックしてデータが登録されることを確認します。

image

image

13) ソリューションエクスプローラーで「すべてのファイルを表示」し、Group.sdfファイルが作成されていることを確認します。
このとき一度最新の情報に更新する必要があるかもしれません。

image

14) Group.sdfファイルを右クリックし、「プロジェクトに含める」を選択します。

15) データーベースエクスプローラーで CategoriesテーブルやMembersテーブルが作成されていることを確認します。

image

ふりかえりの1回目の内容としては、まずはここまで。
サンプルアプリケーションができたら、データの追加/更新/削除ができることを確認してください。

コメントを残す