簡體   English   中英

如何在NHibernate中獲取鍵屬性的映射?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM