[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 メーリングリストの案内