DBFlute.NET で既定の名前空間を使用する場合のまとめ

DBFlute.NET もそこそこ使用してきましたが、
やはり上手くいかないのが、既定の名前空間の使用と外だしSQL(OutsideSql)です。
今回、S2ContainerとDBFluteのバージョン上げるのを機に試行錯誤した結果を纏めておきます。

basicInfoMap.dfprop

packageBase

任意のパッケージ名(名前空間

generateOutputDirectory

単純に出力する場所、特に意識する必要はなし

outputPackageAdjustmentMap.omitDirectoryPackage

出力場所の直下に名前空間に対応したディレクトリ階層を作成するわけだが、既定の名前空間を使用してディレクトリを省略している場合は、既定の名前空間と同じ物を指定する。

outputPackageAdjustmentMap.flatDirectoryPackage

既定の名前空間を使用しない場合で、特定のディレクトリまでを.で繋げて1つのディレクトリにする場合に、そのディレクトリ名と同じ物を指定する。
(既定の名前空間を使用する場合は不要)

outsideSqlDefinitionMap.dfprop

defaultPackage

既定の名前空間を使用している場合は同じ物を指定する。
現時点ではこのプロパティは存在していないので追加する。

sqlPackage

既定の名前空間を使用している場合は、
defaultPackageに指定した名前空間からの相対パッケージ名で指定する。
(先頭に.は不要)

既定の名前空間を使用していない場合はトップからのフル名前空間を指定する。

BehaviorQueryPathを使用する場合は、
sqlPackageで指定した名前空間以下にExBhvディレクトリを作成して、
そのディレクトリ内にSQLファイルを配置する。
※そもそもSQLファイルをDBFluteが生成したExBhvディレクトに配置する場合は、sqlPackage の指定は不要です。

実際の設定内容(サンプル)

以下の様なディレクトリ構成、名前空間を想定します。

/dbflute_client
/src/solution.sln
/src/MainProject
/src/DBFluteProject
/src/DBFluteProject/DBFlute/...
/src/DBFluteProject/Resouces/SQL/ExBhv/...
既定の名前空間:Aaa.Bbb.Ccc

DBFluteサンプルではsrc直下をルート名前空間としていますが、
プロジェクトディレクトリを追加しています。

イメージ的には、このような感じでしょうか。

/src/DBFluteProject/(Aaa/Bbb/Ccc/)DBFlute/...
/src/DBFluteProject/(Aaa/Bbb/Ccc/)Resouces/SQL/ExBhv/...
basicInfoMap.dfprop
packageBase = Aaa.Bbb.Ccc.DBFlute
generateOutputDirectory = ../src/DBFluteProject
omitDirectoryPackage = Aaa.Bbb.Ccc
outsideSqlDefinitionMap.dfprop
defaultPackage:Aaa.Bbb.Ccc
sqlPackage:Resouces.SQL

既定の名前空間を使用しない場合のディレクトリ構成は、

/src/DBFluteProject/Aaa/Bbb/Ccc/DBFlute/...
/src/DBFluteProject/Aaa/Bbb/Ccc/Resouces/SQL/ExBhv/...

あるいは、

/src/DBFluteProject/Aaa.Bbb.Ccc/DBFlute/...
/src/DBFluteProject/Aaa.Bbb.Ccc/Resouces/SQL/ExBhv/...

のいずれかになり、後者の場合には、

basicInfoMap.dfprop
flatDirectoryPackage = Aaa.Bbb.Ccc

の指定が必要になります。


プロジェクトのプロパティからは既定の名前空間を空にすることはできないので、プロジェクトファイルを直接編集する必要があります。

アセンブリ名について(2013/05/07追記)

アセンブリ名については特に考慮する必要は無さそうです。

まとめ

既定の名前空間を使用する場合は、omitDirectoryPackage でディレクトリ階層から省略するパスを指定し、defaultPackage に既定の名前空間を指定しておきます。
既定の名前空間を使用しない場合は簡単な話で、omitDirectoryPackage と defaultPackage は不要です。
その代わり sqlPackage をフルパッケージで指定します(独自のパッケージにSQLファイルを置く場合)。


ただ既定の名前空間を使用しない場合、
その他のリソースも名前空間がなしになる(と思う)ので、
DBFluteがgenerateしたソースとSQLファイル専用にプロジェクトを用意するほうがよさそうです。