Entity Generator

O/Rマッピングツールは便利ですが、Entityを実装するのがちょっとだるいです。やっていることは単純なので自動化ツールをこさえてみました。
Visual Studio上で作業したいのでカスタムツールにしています。使い方はプロジェクトに対象となるテーブル作成sqlを追加し、カスタムツールにEntityGeneratorを登録するだけ。するとカスタムツールがEntityクラスを自動生成します。CodeDOMを使っているのでC#VB問わず使えます。

カスタムツール化については、Gert Servranckx's BlogMicrosoft.VisualStudio.BaseCodeGeneratorWithSite.dllを使わせて頂きました。EntityGeneratorを使うにはこのDLLが必要なので、氏のサイトからダウンロードしてGACにインストールしてください。

EntityGeneratorのダウンロード
インストールは圧縮ファイル内のDLLをGACに放り込んで、regファイルをダブルクリックしてください。これで、カスタムツールとして使えるようになるハズです。

EntityGeneratorの処理の流れ

  1. SQLファイル(create table)の構文解析
  2. EntityクラスをCodeDOMで構築
  3. カスタムツールによってプロジェクトで使用している言語のソースに変換

実際に例を見てみましょう。

まず、以下のようなファイル(entity.sql)があったとします。

/*
	EntityGeneratorテスト用
 */
 
CREATE TABLE /* 部署 */ DEPT (
	deptno NUMERIC(2) CONSTRAINT PK_DEPT PRIMARY KEY,
    deptname VARCHAR(14) ,
    loc VARCHAR(13));
 
CREATE TABLE /* 従業員 */ EMP (
  empno NUMERIC(4) CONSTRAINT PK_EMP PRIMARY KEY, 
  empname VARCHAR(10),
  job VARCHAR(9),
  mgr NUMERIC(4),
  hiredate DATE, 
  sal NUMERIC(7,2),
  comm NUMERIC(7,2), 
  deptno NUMERIC(2) 
    CONSTRAINT FK_DEPTNO REFERENCES DEPT);  
 
-- おしまい

これをプロジェクトに追加します。折角、CodeDOMを使っているのでC#/VB両方のプロジェクトを用意しました。

カスタムツールとしてEntityGeneratorが登録されているのが分かりますでしょうか。

生成されたクラスも見てみましょう。

一応、それっぽく出来てますよね? もちろん、SQLファイルを編集すると自動的にC#/VBのクラスに反映されます。


ANSI標準のSQLなら、そこそこ解析出来ると思うのですが、どーでしょうか。(^^;