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 を以下の設定で追加(スキャッフォールディング)します。
8 ) MemberController.cs ファイル および Memberの各種ビューが追加されたことを確認します。
9) デバッグを開始し、「http://localhost:ポート番号/Member」 にアクセスします。
10) Create New リンクをクリックします。
11) Mail 項目に「test」とだけ入力し、Createボタンを押してエラー表示を確認します。
12) 項目に適当な値を入力し、Createボタンをクリックしてデータが登録されることを確認します。
13) ソリューションエクスプローラーで「すべてのファイルを表示」し、Group.sdfファイルが作成されていることを確認します。
このとき一度最新の情報に更新する必要があるかもしれません。
14) Group.sdfファイルを右クリックし、「プロジェクトに含める」を選択します。
15) データーベースエクスプローラーで CategoriesテーブルやMembersテーブルが作成されていることを確認します。
ふりかえりの1回目の内容としては、まずはここまで。
サンプルアプリケーションができたら、データの追加/更新/削除ができることを確認してください。
-
2011年6月13日 9:08 午前mvcConf @:Japan に参加してきました « ブチザッキ
-
2011年6月13日 1:02 午後mvcConf @:Japan « とある個人事業主のシステム開発メモ
-
2011年6月22日 5:47 午後mvcConf @:Japan のセッションビデオが公開されました « ブチザッキ