はじめに
C#で開発を行っていると、ViewModelやDTOにデータを詰め替えるコードを書かなければならないことがあります。このようなプログラムは難しくはありませんが、単調な作業ゆえにケアレスミスをしやすく、思いのほかメンテナンスに手間どってしまう場合があります。
そこで、本稿ではAutoMapperというオープンソースライブラリを紹介します。AutoMapperを使うと、オブジェクト間でデータを簡単にコピーすることができます。命名ルールに沿ったコピーに加え、独自のマッピングルールを定義できるため、多くのシナリオに対応することができます。
AutoMapperとは
AutoMapperは、CodePlexにて公開されているオープンソースライブラリ(Apache License)です。ソースコードリポジトリはGoogleCode、メーリングリストはGoogleGroupにて運用されています。執筆時点での最新バージョンは1.0RC1です。入手するにはReleaseページからAutoMapper.dllをダウンロードします。
サンプルの構成
ASP.NET MVCの登場により、EntityからViewModelにデータをコピーする機会が増えてきています。そこで、本稿ではASP.NET MVCのプロジェクトを使ってAutoMapperを紹介していきます。
ここでは、書籍テーブル(Book)と著者テーブル(Author)を取得データとします。データアクセスにはSQL Server 2008とLINQ to SQLを使用します。
プロジェクトの作成
最初にASP.NET MVC(C#)のプロジェクトを作成して、AutoMapper.dllに参照設定を行います。そしてサーバエクスプローラからテーブルをドラッグして、LINQ to SQLファイルにBook(書籍)とAuthor(著者)クラスを生成します。
続けて、コピー先となるBookViewクラスのコードを記述します。
コピー先のBookViewクラス
public class BookView
{
public int ID { get; set; } //書籍のID
public string Name { get; set; } //書籍の名前
public int Price { get; set; } //書籍の価格
public DateTime Pubdate { get; set; } //書籍の出版日
public int AuthorAge { get; set; } //著者の年齢
public string AuthorLastName { get; set; } //著者の姓
public string AuthorFirstName { get; set; } //著者の名
}