[seasar-dotnet:401] Re: ASP.NET+VB+S2Dao.NETにおけるSQLファイルの埋め込み

Kazuya Sugimoto sugimotokazuya @ gmail.com
2006年 11月 29日 (水) 16:01:22 JST


津草さん、こんにちは。

杉本です。
セミナーにお越し頂きありがとうございました。

SQLファイルが見つからない現象ということですが、SQLファイルと
Daoインターフェースが同じ名前空間に存在しないといけないという
条件を満たしていないためだと思います。

C#の場合にはフォルダを作成すると埋め込まれたリソースに対して
"既定の名前空間.フォルダ名"という名前空間を付けてくれます。(VS.NETが)

しかしVB.NETの場合は、フォルダを作成しても名前空間を付けてくれません。
フォルダ中に埋め込まれたリソースがあっても"既定の名前空間"の
名前空間しか付いてないはずです。

このため、DaoインターフェースとSQLファイルの名前空間が一致して
いない状態になっていると思われます。

VB.NETの場合はDaoインターフェースに既定の名前空間以外の
名前空間を付けないという悲しい対策しかないのが現状です。

そこでDaoインターフェースにSQLファイルの名前空間を指定できる
機能の追加を計画しています。
https://www.seasar.org/issues/browse/DAONET-21

# この対策は急がないと駄目ですねぇ。


06/11/29 に 津草 佑介 さんは書きました:
> はじめまして、津草と申します。
>
> 先日法政大学で行われたセミナーで杉本さんのお話を伺い、Seasar.NETを導入し
> ようと考え、現在既存のWebアプリを改修しております。
>
> 現在の環境は以下の通りです。
> >ASP.NET
> >.NET Framework 2.0
> >開発言語はVB.NET
> >S2Container.NET 1.2.6
> >S2Dao.NET 1.0.1
>
> ASP.NET+VB.NETのサンプルが少ないこともあり、いろいろ試行錯誤しながら取り
> 組んでおりますが、1点だけどうしても解決できない点があります。
>
> それは、S2Dao.NETにおけるSQLファイルの埋め込みという部分です。
>
> Seasar.NETのページを参考に、VS2005 Express EditionにてDaoインターフェー
> スとSQLファイルを用意してクラスライブラリを作成して、出来たDLLをWebサイ
> トのbin配下に格納して、動作するかを確認しています。
>
> 参考に以下のソースにて実行しています。
> >Daoインターフェース
> Imports System
> Imports System.Data
> Imports System.Collections
> Imports Seasar.Dao.Attrs
> Imports jp.co.seibu_denki.Entity
>
> Namespace jp.co.seibu_denki.IDao
>     <Bean(GetType(KOJI))> _
>     Public Interface IKOJIDao
>         Sub Insert(ByVal koji As KOJI)
>         Sub Update(ByVal koji As KOJI)
>         Sub Delete(ByVal koji As KOJI)
>         Function Search(ByVal koji As KOJI) As IList
>     End Interface
> End Namespace
>
> >SQLファイル(IKOJIDao_Search.sql) ← "埋めこまれたリソース"としている
> SELECT
>     ANKEN_ID,ANKEN_NAME,CUSTOMER_ID,RANK,KOJI_ID,KOJI_NAME,TEIKYO_USER_ID,CUSTOMER_DEPT,CUSTOMER_TANTOU,ROUGH_ESTIMATE,DETAIL,CLOSING_DATE,USER_ID,
> REGIST_DATE,STATUS,VALID,UPDATE_TIME,UPDATE_USER_ID,CAUSE,CONTINUED_FLAG
> FROM
>     KOJI
> WHERE
>     KOJI.CUSTOMER_ID = CUSTOMER.CUSTOMER_ID AND KOJI.USER_ID = USER_DATA.USER_ID
>     /*IF KOJI.RANK != null*/AND RANK = /*KOJI.RANK*/'A'/*END*/
>     /*IF KOJI.USER_ID != null*/AND USER_ID = /*KOJI.USER_ID*/'03443'/*END*/
>
> 出来たDLLをWebサイトのbinに置いてSearch()を実行しているのですがが、ログ
> を見ると上記のSQLで実行されずに自動生成されたSQLが実行されているようです。
>
> SQL文をうまく埋め込むために必要な方法としてなにかアドバイスをいただけた
> らと思います。もしくはASP.NET+VB.NETでSQLファイルを埋め込んだサンプル等
> がありましたら参考にしたいです。
>
> 大変長文になりまして申し訳ございませんが、よろしくお願いいたします。他に
> 開示してほしい情報がありましたらご連絡ください。
>
> --
> 津草 <y-tugusa @ seibu-denki.co.jp>



-- 
Kazuya Sugimoto
http://d.hatena.ne.jp/sugimotokazuya/


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