ビジネスロジック層の作成
データアクセス層ができましたので、次はデータアクセス層を使ったビジネスロジックを記述する、ビジネスロジック層を作成していきましょう。
[1]ビジネスロジック層プロジェクトを作成する
ソリューションに"MRRS.BLL"という名前でクラスライブラリ プロジェクトを追加します。
[2]データアクセス層への参照を追加する
MRRS.DALプロジェクトへの参照を追加します。
[3]ビジネスロジッククラスを作成する
データアクセス層に作成したリポジトリークラスを使い、ビジネスロジックを記載するクラスを、"LocationLogic.cs"という名前で作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using MRRS.DAL;
namespace MRRS.BLL
{
public class LocationLogic
{
private ILocationRepository _locationRepository;
public LocationLogic()
: this(new LocationRepository()) // (1)
{
}
public LocationLogic(ILocationRepository locationRepository) // (2)
{
_locationRepository = locationRepository;
}
/// <summary>
/// 場所名を条件に場所を取得します。
/// </summary>
/// <remarks>場所名未指定時は全データを取得します。</remarks>
/// <returns></returns>
public IEnumerable<Location> Select(string locationName)
{
return _locationRepository.Select(locationName);
}
/// <summary>
/// IDを指定して場所を取得します。
/// ObjectDataSourceで扱えるように、IEnumerableで返します。
/// </summary>
/// <returns></returns>
public Location Find(int locationId)
{
return _locationRepository.Find(locationId);
}
/// <summary>
/// 場所を追加します。
/// </summary>
/// <param name="location"></param>
public void Insert(Location location)
{
_locationRepository.Insert(location);
_locationRepository.Save();
}
/// <summary>
/// 場所を更新します。
/// </summary>
/// <param name="location"></param>
/// <param name="origLocation"></param>
public void Update(Location location)
{
_locationRepository.Update(location);
_locationRepository.Save();
}
/// <summary>
/// 場所を削除します。
/// </summary>
/// <param name="location"></param>
public void Delete(Location location)
{
_locationRepository.Delete(location);
_locationRepository.Save();
}
}
}
ビジネスロジッククラスを作成する際のポイントは以下のとおりです。
(1)引数なしのコンストラクタを用意する
ObjectDataSourceと連携させるため、引数なしのコンストラクタが必要です。
(2)リポジトリーインターフェイス型の引数を持つコンストラクタを用意する
コードによる単体テストを行う際は、外部から使用するモックのリポジトリーオブジェクトを設定します。
