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