[seasar-dotnet:1257] Re: 外だしSQLをファイルシステムから取得したい

kubo [E-MAIL ADDRESS DELETED]
2009年 2月 10日 (火) 11:57:27 JST


久保(jflute)です。

S2Dao.NETにSQLファイルをファイルシステムから
取得する機能は存在していません。
なので、DaoMetaDataImplを拡張するやり方が
一番無難だと思われます。




#
# ちなみに、Quill + DBFluteではファイルシステムからも
# 取得できるようにしております。
# (提示して頂いている拡張とほぼ同じ処理をしています)
#

2009/2/10 Mai Kawasaki <[E-MAIL ADDRESS DELETED]>:
> こんにちは、maiです。
>
> 現在、VB2008、S2Container + S2DaoでWindowsアプリ開発を行っています。
>
> diconファイルやS2Daoの外だしSQLの内容を、
> 「埋め込まれたリソース」ではなくファイルシステムから取得し、
> 現場にて内容の切り替えをしたいと考えています。
> diconの内容はファイルシステムからできたのですが、
> 外だしSQLをファイルシステムから取得することができません。
>
> 今のところ、
> Seasar.Dao.Impl.DaoMetaDataImplのSetupMethodBySqlFileを
> 下記のようにすることで対応しようかと考えていますが、
> 他に良い方法がありましたら、ご教示頂けないでしょうか。
>
>        protected virtual void SetupMethodBySqlFile(MethodInfo mi)
>        {
>            string baseName = GetSqlFilePath(mi);
>            string dbmsPath = baseName + _dbms.Suffix + ".sql";
>            string standardPath = baseName + ".sql";
>
>            Assembly asm = _daoInterface.Assembly;
> // 追加:ここから
>            // ファイルシステムから、SQLファイルが取得できるかをチェック
>            FileInfo sqlFileInfo = new FileInfo(standardPath);
>            if (sqlFileInfo.Exists) {
>                //ファイルが存在するなら、StreamReaderを指定されたエンコードで作成する
>                using (StreamReader sr = new StreamReader(standardPath,
> Encoding.GetEncoding(SqlFileEncoding)))
>                {
>                    string sql = sr.ReadToEnd();
>                    SetupMethodByManual(mi, sql);
>                }
>                return;
>            }
> // 追加:ここまで
>            if (ResourceUtil.IsExist(dbmsPath, asm))
>            {
>                string sql = ReadText(dbmsPath, asm);
>                SetupMethodByManual(mi, sql);
>            }
>            else if (ResourceUtil.IsExist(standardPath, asm))
>            {
>                string sql = ReadText(standardPath, asm);
>                SetupMethodByManual(mi, sql);
>            }
>
>        }
>
> --
> mai
> [E-MAIL ADDRESS DELETED]
>
> _______________________________________________
> seasar-dotnet mailing list
> [E-MAIL ADDRESS DELETED]
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


seasar-dotnet メーリングリストの案内