DBFlute.NETの複数DB設定をつかってみた

DBFlute.NETの複数DB設定をつかってみたのでメモ。

普段Java版のDBFluteを使っていて、.NETについては無知なのでところどころつまづいてしまいました。
(やったことは、QuillDBFluteをつかってのDB接続です。)
とりあえず動くようになりましたが、間違い等指ありましたら摘いただけると助かります

ということで複数DB接続をDBFlute.NETでやる場合に必要なこと備忘録

DBFlute.NETについてはDBFlute.NETの紹介 | DBFlute.NETにて説明があります。 また、svnリポジトリにdfnet-multipledb-quil-exampleがあります。

自動生成について

自動生成はJavaと同じようにdfprop等の設定をしてmanage.batを叩けば出力される。

  • basicInfoMap.dfpropのtargetLanguageをcsharpにする
  • basicInfoMap.dfpropのpackageBaseを出力するパスに設定する
    • 上記サンプルを参考にDBFlute部分(Dao)をまとめたプロジェクトを作成し、ソリューションに含めていたので同じようにしました。
    • HogeDbフォルダとFooDbフォルダがXXXDaoのDBFluteフォルダ配下に置かれる形にするためには、 packageBaseは、XXXDao.DBFlute.HogeDBとXXXDao.DBFlute.FooDbとする
  • Javaでも同じですが、basicInfoMap.dfpropのprojectPrefixを設定して名前が被らないようにする
  • 外だしファイルを使うときには、outsideSqlDefinitionMap.dfpropのsqlPackage = $$PACKAGEBASE$$のコメントアウトを外しておく(Javaでも一緒)
    • これを有効にしていないと、jdbcやgenerateの際に自分のものではないsqlファイルを見に行ってしまいエラーとなる

VisualStudioでの設定とか

  • 外だしsqlファイルは、ExBhvに置く
  • ファイルのプロパティ設定でビルドアクションを”埋め込まれたリソース”に変更する
    • 埋め込まれたリソースに変更しないと、アセンブリに登録されず外だしsqlファイルが見つからないエラーが発生する
  • 各DB用に生成されたフォルダ配下のAllCommon/S2Dao/XXS2DaoSettig.csのXXS2DaoSettingクラスにメソッドを追加する

    public override String DataSourceName { get { return "DataSourceのid"; } }

感想など

  • JavaDBFluteをつかっている人からすると同じ感覚で使用出来るのがとてもメリット
  • アセンブリへの登録など.NET特有のことがわからなかった
    • JavaDBFluteやってるからまぁできるでしょ、の前にちょっとは勉強しておいた方がよさそう
  • Quillがとても便利。細かい融通はきかないけどとりあえずDIでってときにはとても便利
  • Seasar以外の.NETのDIについて調べる。というか.NETのテクノロジ全然しらないので勉強する。