2009-03-01 18 views
0

NHibernate eşlemelerine sahip bir SiteMapNode stil oluşturulmuş nesne oluşturmaya çalışıyorum. Amaç, ASP.NET SiteMapNode nesnesini taklit etmektir, böylece dinamik bir arka uç için NHibernate kullanılarak bir özel sağlayıcı oluşturulabilir.NHibernate'de Eşleştirme Kardeşleri

İçinde bulunduğum sorun, bir site haritasının ağaç niteliğidir. ASP.NET nesnesinin bir sonraki ve bir önceki kardeş nesnesine sahip. Bu iyi ve iyi. SiteMapNode tablomda bir NextSiblingId ve PreviousSiblingId istemedim. Bu nesneleri görüntülediğimde bir OrdinalPosition özelliğine sahip olmanın iyi olacağına karar verdim. Araştırmadan sonra, NHibernate'de NextSibling ve PreviousSibling özellik haritalaması yapamayacağımı düşünüyorum. Bunu düzeltmek benim düşüncem bir Kardeşler koleksiyonu yapmak. Bu koleksiyon, sahibi nesnesiyle aynı ParentNodeId değerine sahip olacaktır.

Bu mümkün mü?

<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2" namespace="AthletesCafe.Core.Domain.System.SiteMap" assembly="AthletesCafe.Core"> 

    <class name="SiteMapNode" table="SiteMapNode" lazy="true" > 

    <id name="ID" type="Int32" unsaved-value="0"> 
     <column name="ID" not-null="true" unique="true" index="PK_SiteMapNode"/> 
     <generator class="identity" /> 
    </id> 

    <property name="Title" column="Title" type="String" length="255" not-null="true" /> 
    <property name="Description" column="Description" type="String" not-null="false" /> 

    <property name="Url" column="Description" type="String" not-null="true" length="1000" /> 

    <property name="Key" column="NodeKey" type="String" not-null="true" length="255" /> 

    <property name="OrdinalPosition" column="OrdinalPosition" type="Int32" not-null="true" /> 

    <property name="ReadOnly" column="ReadOnly" not-null="true" type="System.Boolean" /> 

    <property name="IsExternal" column="IsExternal" not-null="true" type="System.Boolean" /> 

    <many-to-one name="ParentNode" column="ParentNodeId" class="AthletesCafe.Core.Domain.System.SiteMap.SiteMapNode, AthletesCafe.Core" 
       access="field.pascalcase-underscore" not-null="false" /> 

    <bag name="Siblings" access="field.pascalcase-underscore" inverse="true" lazy="true"> 
     <key column="ParentNodeId" /> 
     <many-to-many foreign-key="ParentNodeId" class="AthletesCafe.Core.Domain.System.SiteMap.SiteMapNode, AthletesCafe.Core" /> 
    </bag> 

    <bag name="ChildNodes" generic="true" inverse="true" lazy="true" access="field.pascalcase-underscore"> 
     <key column="ParentNodeId" /> 
     <one-to-many class="AthletesCafe.Core.Domain.System.SiteMap.SiteMapNode, AthletesCafe.Core"/> 
    </bag> 

    </class> 
</hibernate-mapping> 

Kardeşleri çanta childNodes topluluğu olarak aynı şeyi verir: Burada

Ben şimdiye kadar ile geldim haritalama dosyasıdır. Sadece anahtar ve yabancı anahtar özelliklerinin nasıl çalıştığını anlamıyorum. Anahtar öğedeki sütun özelliğinin, nHibernate öğesinin, yabancı nesnenin sütununa eşlemek için sahip nesnesindeki sütunu kullanması gerektiğini anladım. Sadece koleksiyonun düğümlerinde ParentNodeId nHibernate nasıl görüneceğini öğrenmek zorunda. Biri yardım edebilir mi? Bu blog yazısı dışarı

cevap

0

Kontrol: Daha önce bu yazı buldum How to map a tree in NHibernate

+0

. Ben Next/Önceki kardeş sorununu ararken orjinal olarak okudum. Hala, geçerli nesne ile aynı düzeyde düğümleri değil. Ebeveynleri ve sonra da çocukları almam gereken bir şey olup olmadığını merak ediyorum. –