DBFlute.NET で既定の名前空間を使用する場合のまとめ
DBFlute.NET もそこそこ使用してきましたが、
やはり上手くいかないのが、既定の名前空間の使用と外だしSQL(OutsideSql)です。
今回、S2ContainerとDBFluteのバージョン上げるのを機に試行錯誤した結果を纏めておきます。
basicInfoMap.dfprop
packageBase
任意のパッケージ名(名前空間)
generateOutputDirectory
単純に出力する場所、特に意識する必要はなし
outsideSqlDefinitionMap.dfprop
defaultPackage
既定の名前空間を使用している場合は同じ物を指定する。
現時点ではこのプロパティは存在していないので追加する。
実際の設定内容(サンプル)
/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の指定が必要になります。
プロジェクトのプロパティからは既定の名前空間を空にすることはできないので、プロジェクトファイルを直接編集する必要があります。
まとめ
既定の名前空間を使用する場合は、omitDirectoryPackage でディレクトリ階層から省略するパスを指定し、defaultPackage に既定の名前空間を指定しておきます。
既定の名前空間を使用しない場合は簡単な話で、omitDirectoryPackage と defaultPackage は不要です。
その代わり sqlPackage をフルパッケージで指定します(独自のパッケージにSQLファイルを置く場合)。
ただ既定の名前空間を使用しない場合、
その他のリソースも名前空間がなしになる(と思う)ので、
DBFluteがgenerateしたソースとSQLファイル専用にプロジェクトを用意するほうがよさそうです。