2011-01-31 204 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