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

koyak kotani.k @ buildsystem.jp
2006年 12月 1日 (金) 02:13:38 JST


小谷です。

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

meiさんが提示されたコードを少しだけ
いじってみました(↓)。
そのままでもDB列名と一致するプロパティがあった
場合はそちらを優先して対応づけます。
いかがでしょうか?
=================================================
for(IEnumerator enu = columnSet.GetEnumerator(); enu.MoveNext();)
{
	//  koyak modified ==========================================
	//string columnName = (string) enu.Current;
    //string columnName2 = columnName.Replace("_", "");
    //for(int i = 0; i < PropertyTypeSize; ++i)
    //{
    //    IPropertyType pt = GetPropertyType(i);
    //    if(string.Compare(pt.ColumnName, columnName2, true) == 0)
    //    {
    //        pt.ColumnName = columnName;
    //        break;
    //    }
    //}

    string plainColumnName = (string)enu.Current;
    string columnName = "";
    if (HasPropertyType(plainColumnName)) {
    	columnName = plainColumnName;
    } else {
    	string noUnderbarColumnName = plainColumnName.Replace("_", "");
        if (HasPropertyType(noUnderbarColumnName)) {
        	columnName = noUnderbarColumnName;
        }
    }
    if (columnName.Length > 0) {
    	IPropertyType pt = GetPropertyType(columnName);
    	pt.ColumnName = columnName;
    	break;
	}
	//  ==========================================================
}
===================================================
テスト用テーブルのEMPテーブルにENAME_という列を追加し、
Seasar.Dao.Testsの
EmployeeエンティティにEname_プロパティを追加しての
テストは通過することは確認しています。
(DB:SQL Server 2005 Express)

> (S2Daoは、基本方針として、BOOK_ID と BookId を
>  同じものとして扱っていますので...)

となると、この修正を入れた場合、この前提を
少し崩すことになってしまうかもしれませんね。。。



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