2011-01-31 211 views
0

我想解析一個流利的NHibernate映射文件,這樣我就可以得到在那裏指定的表名和列名。流利的NHibernate反射映射

加載程序集並將類型反映爲ClassMap不是問題,但該類僅獲取設置表和列名稱的方法 - 無法再次獲取名稱。

任何想法?

回答

0

使用Reflector,它看起來像表方法有此簽名:

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:\我最終編寫了自己的Update方法,該方法將字段的lambda表達式列表更新和條件子句的lambda表達式的新值和列表,而不是使用nHibernate爲每個更新加載每個實體。 – johnnyboy 2011-02-02 04:10:49