2011-01-31 22 views
0

Fluent NHibernateマッピングファイルを解析したいので、そこに指定されているテーブル名とカラム名を取得できます。Fluent NHibernateリフレクトマッピング

アセンブリをロードし、その型をClassMapとして反映することは問題にはなりませんが、そのクラスはテーブル名とカラム名を設定するメソッドしか取得できません。

アイデア?表のメソッドは、この署名を持っているようReflectorを使用して

答えて

0

、それが見えます:それはプロパティ、参照、別のコレクションを保持して

public void Table(string tableName) 
{ 
    this.attributes.Set<string>(x => x.TableName, tableName); 
} 

列は、多くの困難になります。例えば。理論的には

protected virtual PropertyPart Map(PropertyInfo property, string columnName) 
{ 
    PropertyPart propertyMap = new PropertyPart(property, typeof(T)); 
    if (!string.IsNullOrEmpty(columnName)) 
    { 
     propertyMap.Column(columnName); 
    } 
    this.properties.Add(propertyMap); 
    return propertyMap; 
} 

あなたは、リフレクション経由でプライベートフィールドの属性、プロパティ、および参照を取得し、情報をそのように得ることができるのに。

+0

私は思ったほどこれを必要としませんでした。どうやら、nHibernateのCreateQueryメソッドは、文字列をオブジェクト名で解析し、クラスフィールド名をあなたのための列名にマップしています - まだnhibernateを学んでいます:\私はフィールドのラムダ式のリストnHibernateを使用して更新ごとに各エンティティをロードするのではなく、条件節のラムダ式のリストと新しい値と新しい値を追加します。 – johnnyboy