2017-06-14 17 views
0

ネスティングされたオブジェクトのプロパティに基づいてデータをソートする必要があります。ネストされたオブジェクトのプロパティによるNhibernateの順序

これは、メインクラス "速報" です:

public class Recipient 
{ 
    public virtual Int32 RecipientID { get; set; } 
    public virtual String Prefix { get; set; } 
    public virtual String Firstname { get; set; } 
    public virtual String Lastname { get; set; } 
    public virtual String Email { get; set; } 
    public virtual DateTime DateEntry { get; set; } 
} 

:これは二番目の "受信者" である

<?xml version="1.0" encoding="utf-8" ?> 
<hibernate-mapping xmlns="urn:nhibernate-mapping-2.2"> 
    <class name="Sfa.Engine.domain.Bulletin,Sfa.Engine" table="Bulletins" lazy="true"> 
    <id name="BulletinID" column="BulletinID"> 
     <generator class="native" /> 
    </id> 
    <property name="AgentID" column="AgentID" type="Int32" not-null="true" /> 
    <property name="DateSent" column="DateSent" type="datetime" not-null="false" /> 
    <property name="DateEntry" column="DateEntry" type="datetime" not-null="true" /> 
    </class> 
</hibernate-mapping> 

[Serializable] 
public class Bulletin 
{ 
    public virtual Int32 BulletinID { get; set; } 
    public virtual Int32 AgentID { get; set; } 
    public virtual Recipient Recipient 
    { 
     get 
     { 
      var rm = new CRecipientManager(); 
      var rec = rm.GetById(1); 
      return rec; 
     } 
    } 
    public virtual DateTime? DateSent { get; set; } 
    public virtual DateTime DateEntry { get; set; } 
} 

のhbm.xmlファイル私のマネージャーコード:

public ICollection<Bulletin> GetAll() 
{ 
    using (ISession session = NHibernateHelper.OpenSession()) 
    { 
     var bulletins = session 
      .CreateCriteria(typeof(Bulletin)) 
      .AddOrder(Order.Asc("BulletinID")) 
      .CreateAlias("Recipient", "rec").AddOrder(Order.Asc("rec.Firstname")) 
      .List<Bulletin>(); 
     return bulletins; 
    } 
} 
は、私はクラスの受信者のエイリアスを作成し、ソート基準としてファーストネームを使用しますがNHibernateは私に与えて、この: は解決できませんでしたプロパティ:受信者の:Sfa.Engine.domain.Bulletin

受信者のpropery掲示物のアクセス可能で公開されている、何が間違っていますか?

+0

を参照してください、 "掲示板"、オブジェクトの受信者を参照するアイテムがありません。これは普通でしょうか?関係を1対1でマッピングする必要がありますか? – Ras

答えて

0

チェック:

public ICollection<Bulletin> GetAll() 
    { 
     using (ISession session = null) 
     { 
      var bulletins = session 
       .CreateCriteria(typeof(Bulletin)) 
       .CreateAlias("Recipient", "rec") 
       .SetProjection(Projections.ProjectionList() 
        .Add(Projections.Property("rec.Firstname"), "Firstname") 
       ) 
       .AddOrder(Order.Asc("BulletinID")) 
       .AddOrder(Order.Asc("Firstname")) 
       .List<Bulletin>(); 
      return bulletins; 
     } 
    } 

は、メインクラスののhbm.xmlに実際にthis

+0

あなたはどこでISessionオブジェクトを初期化しますか?このコードを調整すると、セッションobjはnullですが、NHibernateHelper.OpenSession()を使用して初期化すると、私は上記の同じエラーが発生します – Ras

関連する問題