C# 如何获取NHibernate中键属性的映射?

C# 如何获取NHibernate中键属性的映射?,c#,nhibernate,mapping,composite-key,C#,Nhibernate,Mapping,Composite Key,我试图在运行时使用以下行为POCO类加载nhibernate映射: var persistentClass = NHibernateHelper.Configuration.GetClassMapping( type ); var property = persistentClass.GetProperty( propertyName ); 它工作正常,但在具有以下映射的类上的属性GroupId上失败: <class name="GroupPartnerInterest" table="

我试图在运行时使用以下行为POCO类加载nhibernate映射:

var persistentClass = NHibernateHelper.Configuration.GetClassMapping( type );
var property = persistentClass.GetProperty( propertyName );
它工作正常,但在具有以下映射的类上的属性GroupId上失败:

<class name="GroupPartnerInterest" table="[GROUP_PARTNER_INTERESTS]">
  <composite-id >
    <key-property name="GroupId" column="PAR_ID" />

如果
type==typeof(GroupPartnerInterest)
persistentClass.GetProperty(“GroupId”)
失败并出现映射异常:

未找到属性:实体上的GroupId 集团合作伙伴利益”

我可以在调试器中看到,
composite id
中的
键属性
不会出现在persistentClass.properties中

是否有方法获取此键属性的映射


提前感谢。

普通属性可以通过
persistentClass.PropertyClosureIterator进行迭代(包括基类的属性)

键属性位于
((组件)(persistentClass.Identifier)).PropertyIterator

通过这段代码,我可以搜索关键属性和普通属性:

var propserties = persistentClass.PropertyClosureIterator;
if ( persistentClass.Identifier is Component )
{
    properties = ( ( Component )( persistentClass.Identifier ) ).PropertyIterator
                    .Union( properties );
}

Property property
    = (
        from it in properties
        where it.Name == propertyName
        select it
      ).FirstOrDefault();

普通属性可以通过
persistentClass.PropertyClosureIterator
进行迭代(包括基类的属性)

键属性位于
((组件)(persistentClass.Identifier)).PropertyIterator

通过这段代码,我可以搜索关键属性和普通属性:

var propserties = persistentClass.PropertyClosureIterator;
if ( persistentClass.Identifier is Component )
{
    properties = ( ( Component )( persistentClass.Identifier ) ).PropertyIterator
                    .Union( properties );
}

Property property
    = (
        from it in properties
        where it.Name == propertyName
        select it
      ).FirstOrDefault();