PetaPoco には、データベースから Poco を自動的に生成するための T4 Template が付属している。今回はそれを使ってみる。

https://github.com/toptensoftware/petapoco
上から PetaPoco をダウンロードすると、Models フォルダの下に Generated フォルダがあり、その中に以下の4ファイルがある。
  ・Database.cs
  ・Database.tt
  ・PetaPoco.Core.ttinclude
  ・PetaPoco.Generator.ttinclude

これらのファイルのうち下の3つをプロジェクトに追加して、Visual Studio から使用するのだが、今回は分かりやすいように新規プロジェクトでやってみる。

1. C# のクラスライブラリの新規プロジェクトを作成する。

2. アプリケーション設定ファイル App.config をプロジェクトに追加し、データベースへの接続文字列を追加する。たとえば接続文字列名 PPTest で追加すると、以下のようになる。
<?xml version="1.0" encoding="utf-8" ?>
<configuration>
    <connectionStrings>
        <add name="PPTest" providerName="System.Data.SqlClient" connectionString="Data Source=localhost\SQLEXP2012; Initial Catalog=PPDB; User ID=sa; Password=sa; " />
    </connectionStrings>
</configuration>


3. 参照設定の追加で System.Configuration を追加する。上記の接続文字列を読み込むのに必要となるようだ。

4. ダウンロードした PetaPoco のファイルのうち、以下をプロジェクトに追加する。
  ・PetaPoco.cs
  ・Database.tt
  ・PetaPoco.Core.ttinclude
  ・PetaPoco.Generator.ttinclude

5. 追加した Database.tt を開き、冒頭の ConnectionStringName に、App.config に追加した接続文字列名を指定する。ここでは上で指定した PPTest を設定する。
また、必要に応じて Settings とコメントのある部分を編集する。ここでは Namespace と ClassPrefix を指定してみた。
    // Settings
    ConnectionStringName = "SHK";            // Uses last connection string in config if not specified
    Namespace = "PPTest.PPDatabase";
    RepoName = "";
    GenerateOperations = true;
    GeneratePocos = true;
    GenerateCommon = true;
    ClassPrefix = "PPRow_";
    ClassSuffix = "";
    TrackModifiedColumns = false;

6. ここまで設定したら、Visual Studio のソリューションエクスプローラーの Database.tt の上で右クリックし、「カスタム ツールの実行」を選ぶ。そうすると、Database.cs が生成され、その中に Poco が生成されている。

以上だが、そのままやると以下のような警告が出てしまう。
C# 2.0 と C# 3.5 のコンパイラはサポートされなくなりました。テンプレートは、指定された 'v3.5' ではなく、常にバージョン 4 のコンパイラでコンパイルされます。

警告が嫌な場合は、PetaPoco.Core.ttinclude の1行目にある以下の "C#v3.5" を "C#" と編集するといい。
<#@ template language="C#v3.5" hostspecific="True" #>

以上。