NHibernate:如何获取映射值?

时间:2010-03-18 14:54:56

标签: nhibernate

假设我有一个映射到数据库的Customer类,一切都很好。

现在假设我想在我的应用程序中检索NH知道Customer.FirstName映射到的列名。

我该怎么做?

2 个答案:

答案 0 :(得分:5)

您可以通过NHibernate.Cfg.Configuration访问数据库字段名称:

// cfg is NHibernate.Cfg.Configuration
// You will have to provide the complete namespace for Customer
var persistentClass = cfg.GetClassMapping(typeof(Customer));
var property = persistentClass.GetProperty("FirstName");
var columnIterator = property.ColumnIterator;

ColumnIterator属性返回IEnumerable<NHibernate.Mapping.ISelectable>。几乎在所有情况下,属性都映射到单个列,因此可以使用property.ColumnInterator.ElementAt(0).Text找到列名。

答案 1 :(得分:0)

我不知道那是可行的。

我认为最好的办法是使用.xml文件进行映射,将它们与应用程序打包在一起并在运行时读取内容。我不知道有一个API允许你在运行时查询hibernate注释(原谅Java术语),这就是你需要的。

更新: 根据Jamie的解决方案判断,NHibernate和Hibernate有不同的API,因为Hibernate org.hibernate.Hibernate类无法访问“配置”属性。