假设我有一个映射到数据库的Customer类,一切都很好。
现在假设我想在我的应用程序中检索NH知道Customer.FirstName映射到的列名。
我该怎么做?
答案 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类无法访问“配置”属性。