代码之家  ›  专栏  ›  技术社区  ›  George Mauer

NHibernate:如何获取映射值?

  •  3
  • George Mauer  · 技术社区  · 15 年前

    假设我有一个映射到数据库的类客户,一切都正常。

    现在假设我想在我的应用程序中检索nhknowsecustomer.firstname映射到的列名。

    我该怎么做?

    2 回复  |  直到 15 年前
        1
  •  5
  •   Jamie Ide    15 年前

    您可以通过 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 .

        2
  •  0
  •   Tomislav Nakic-Alfirevic    15 年前

    我不知道那是可行的。

    我相信您最好的选择是使用.xml文件进行映射,将它们与应用程序打包在一起,并在运行时读取内容。我不知道一个API,它允许您在运行时查询Hibernate注释(原谅Java LINGO),这就是您所需要的。

    更新: 根据jamie的解决方案判断,nhibernate和hibernate有不同的api,因为hibernate org.hibernate.Hibernate 类不提供访问“配置”属性的方法。