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

mei mei @ work.email.ne.jp
2006年 11月 12日 (日) 21:47:43 JST


こんばんは、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 メーリングリストの案内