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