[英]How to get mapping for key-property in NHibernate?
我正在嘗試在運行時使用以下行為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" )
因MappingException而失敗:
找不到屬性:實體GroupPartnerInterest上的GroupId”
我在調試器中看到,來自composite-id
key-properties
沒有出現在persistentClass.properties中。
有沒有辦法獲取此密鑰屬性的映射?
先感謝您。
普通屬性可以通過persistentClass.PropertyClosureIterator
(包括基類的屬性)進行迭代。
關鍵屬性在( ( Component )( persistentClass.Identifier ) ).PropertyIterator
.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();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.