C# 如何获取NHibernate中键属性的映射?
我试图在运行时使用以下行为POCO类加载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="
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();