[seasar-dotnet:380] Re: _を含むカラムがあるテーブルについて

Kazuya Sugimoto sugimotokazuya @ gmail.com
2006年 11月 13日 (月) 13:16:57 JST


杉本です。

meiさん、ご要望ありがとうございます。

なるほど。想定してませんでした。
対応したいと思います。

特に問題ないですよね > コミッタALL

06/11/12 に mei さんは書きました:
> こんばんは、meiです。
>
> S2Dao.NETについてですが、
>
> create table A (
>     X   varchar(2),
>     X_  varchar(2)
> );
>
> 上記のように_を削除したらカラム名が衝突するようなテーブルがあり、
>
> class A {
>     string  X;
>     string  X_;
> }
>
> このようなEntityクラスを用意し、Daoインタフェースを作成して更新系のメ
> ソッドを呼び出すと、カラム名の重複エラーが発生してしまいます。
>
> 現状、プロパティ名のテーブルのカラム名から_を削除したものを比較して一致
> すると無条件にテーブルのカラム名を設定していますが、
> 重複しない場合のみ、設定するようにしていただけないでしょうか?
>
>
> 例えば、以下のような感じです。
>
> -- ここから
>
> BeanMetaDataImpl.cs (410)
>
> protected void SetupPropertyPersistentAndColumnName(Type beanType,
>         IDatabaseMetaData dbMetaData)
> {
>     IList columnSet = dbMetaData.GetColumnSet(tableName);
>     if(columnSet == null || columnSet.Count == 0)
>     {
>         logger.Log("WDAO0002", new object[] { tableName });
>     }
>     else
>     {
>         for(IEnumerator enu = columnSet.GetEnumerator(); enu.MoveNext();)
>         {
>             string columnName = (string) enu.Current;
>             // データベースのカラム名がプロパティに存在しない
>             if (!HasPropertyType(columnName))
>             {
>                 // _を削除してもう一度プロパティを探す
>                 string columnName2 = columnName.Replace("_", "");
>                 if (HasPropertyType(columnName2))
>                 {
>                     // 見つかったらプロパティ情報のカラム名をデータベー
> スのカラム名にする
>                     IPropertyType pt = GetPropertyType(columnName2);
>                     pt.ColumnName = columnName;
>                 }
>             }
>         }
>     }
>
> -- ここまで
>
> よろしくお願いします。
>
> P.S.
> Seasar Conference 2006 Autumnお疲れ様でした。
>
> --
> mei <mei @ work.email.ne.jp>
> _______________________________________________
> seasar-dotnet mailing list
> seasar-dotnet @ ml.seasar.org
> https://ml.seasar.org/mailman/listinfo/seasar-dotnet
>


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


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