Nhibernate 如何获取所有实体映射表的列表?

Nhibernate 如何获取所有实体映射表的列表?,nhibernate,nhibernate-mapping,Nhibernate,Nhibernate Mapping,简而言之:如何获取映射到实体的所有表名的列表 原因: 我们有一组由NHibernate支持的WCF web服务,这些服务通过FluentNHibernate映射。我们在体系结构中构建了一个简单而强大的健康检查功能。我们可以调用secured Diagnose()服务操作,它会向Windsor容器请求IHealthCheck接口的所有注册实例。我们有许多此接口的具体实现,用于检查产品的安装状态,即数据库连接、种子数据、下行服务连接等 我们已经构建了许多东西来检查NHibernate代码的运行状况。

简而言之:如何获取映射到实体的所有表名的列表

原因: 我们有一组由NHibernate支持的WCF web服务,这些服务通过FluentNHibernate映射。我们在体系结构中构建了一个简单而强大的健康检查功能。我们可以调用secured Diagnose()服务操作,它会向Windsor容器请求IHealthCheck接口的所有注册实例。我们有许多此接口的具体实现,用于检查产品的安装状态,即数据库连接、种子数据、下行服务连接等

我们已经构建了许多东西来检查NHibernate代码的运行状况。例如,我们借用了[1]代码表单Ayende来查询每个映射。我想围绕我们与NHibernate一起使用的自定义KeyGenerator实现构建一个检查。我们有一个表,在数据库中每个表存储一行。我们的HILO算法使用该表执行密钥生成。因此,我想写一个检查,确认SessionFactory中的每个映射实体在该表中都有一行,表示支持表的实体

任何指点都将不胜感激。SessionFactory.GetAllClassMetadata()闻起来很有希望,但我看不到要查找的确切内容

干杯


[1]

我做了同样的事情,保留了对用于构建SessionFactory的NHibernate.Cfg.Configuration的引用


它有一个ClassMappings集合,其中包含每个实体的PersistentClass对象。PersistentClass.Table.Name属性应该是您要查找的属性。

确切地说,不要忘记PersistentClass.Table.Schema