[seasar-dotnet:412] Re: _を含むカラムがあるテーブルについて
Kazuya Sugimoto
sugimotokazuya @ gmail.com
2006年 12月 1日 (金) 19:20:40 JST
杉本です。
列名がBOOK_ID, BOOK_ID_のように"_"が間にも後ろにも付いた場合、
プロパティは、BookId, BookId_とせずにBook_id, Book_id_にしないと
いけないという仕様にするということで良いですよね。
小谷さんの案で変更お願いしてもよろしいでしょうか?>小谷さん
06/12/01 に koyak さんは書きました:
> 小谷です。
>
> >>なるほど。想定してませんでした。
> >>対応したいと思います。
>
> 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 を
> > 同じものとして扱っていますので...)
>
> となると、この修正を入れた場合、この前提を
> 少し崩すことになってしまうかもしれませんね。。。
>
--
Kazuya Sugimoto
http://d.hatena.ne.jp/sugimotokazuya/
seasar-dotnet メーリングリストの案内