(15):チュートリアル(4)〜Bussiness Moduleの作成〜
- 著者情報を扱うビジネスモジュール「AuthorsBL.dll」を作成する。
-
- (1)[Module]フォルダを右クリックして、[Web Client Factory]−[Add Bussiness Module]を選択する。(Bussiness Moduleとは、特定のドメインに特化したモジュールのこと)
-
- (2)[Add New Project]ダイアログが表示される。プロジェクト名に「AuthorBL」と入力して[OK]をクリック。
-
- (3)[Add Bussiness Module]ダイアログが表示される。「Use module name as Web site folder name」のチェックを外し、Webサイトのフォルダ名を「Authors」に設定する。ユニットテスト用のプロジェクトも作成するため「Create project for unit tests」にチェックをいれる。[完了]をクリック。
-
- (4)AuthorsBLプロジェクトとAuthorsBL.Testsプロジェクトが生成される。テストプロジェクトはいったんアンロードしておく。
-
- (5)Entityフォルダを作成し、アクセッサから構成されるAuthorsクラスを作成。
using System; using System.Collections.Generic; using System.Text; namespace MyWcsf.AuthorsBL.Entity { //著者情報を格納するクラス(ページでの表示用) public class Author { private int _id; //ID public int Id { get { return _id; } set { _id = value; } } private string _name; //著者名 public string Name { get { return _name; } set { _name = value; } } private string _tel; //電話番号 public string Tel { get { return _tel; } set { _tel = value; } } private string _regDage; //登録日 public string RegDage { get { return _regDage; } set { _regDage = value; } } } }
using System; using System.Collections.Generic; using System.Text; using Microsoft.Practices.CompositeWeb; using MyWcsf.Dao.AuthorsTableAdapters; using MyWcsf.AuthorsBL.Entity; using Microsoft.Practices.ObjectBuilder; //コントローラ(ページ間で共通の処理やページ遷移を記述するクラス) namespace MyWcsf.AuthorsBL { public class AuthorsBLController { //コンストラクタ public AuthorsBLController() { } //プロパティ・・・DAO層のTableAdapter //(ObjectBuilderでプロパティインジェクション) private AUTHORTableAdapter _authorTA; [Dependency(CreateType=typeof(AUTHORTableAdapter))] public virtual AUTHORTableAdapter AUTHORTableAdapter { set { _authorTA = value; } } //著者を全員取得するメソッド public virtual IList<Author> GetAuthors() { List<Author> result = new List<Author>(); foreach (Dao.Authors.AUTHORRow row in _authorTA.GetData().Rows) { Author author = new Author(); author.Id = row.ID; author.Name = row.NAME; author.Tel = row.TEL; author.RegDage = row.REG_DATE.ToString("yyyy/MM/dd"); result.Add(author); } return result; } //キーにて著者を1人取得するメソッド public virtual Author GetAuthorById(int id) { Author result = null; foreach (Dao.Authors.AUTHORRow row in _authorTA.GetDataById(id).Rows) { result = new Author(); result.Id = row.ID; result.Name = row.NAME; result.Tel = row.TEL; result.RegDage = row.REG_DATE.ToString("yyyy/MM/dd"); } return result; } } }
*1:各メンバにvirtualを付加しているのは、テストプロジェクトでは、Controllerクラスを継承したMockを利用するため。テストに都合の悪いメンバの振る舞いをMockでオーバライドして変更できる。